onSaveInstanceState、onRestoreInstanceState、onNewIntent調用時機

onSaveInstanceState是在Activity還有機會被顯示的時候被調用(比如從ActivityA打開另外一個ActivityB,或者切換橫豎屏導致ActivityA被銷燬重建),在Activity被正常銷燬的時候不會被調用(直接調用finish()的情況),調用時機是:onStop()之前被調用,與onPause()沒有嚴格的前後順序關係

onRestoreInstanceState數據恢復並且保證Bundle有值的時候,調用時機是在onStart()之後

onNewIntent:對於singleTask、singleTop、sigleInstance的Activity來說,如果位於位於棧頂,onPause()->onNewIntent()->onResume(),對於sigleTask的Activity來說,如果啓動模式爲singleTask的ActivityA啓動啓動普通模式的ActivityB,並在ActivityB中啓動ActivityA,調用順序爲:ActivityB onPause()->ActivityA onNewIntent()->ActivityA onRestart()->ActivityA onStart()->ActivityA onResume()->ActivityB onStop()->ActivityB onDestroy()

特殊一些的是如果singleInstance的ActivityA啓動ActivityB,並在ActivityB中啓動ActivityA,那麼調用順序爲:ActivityB onPause()->ActivityA onNewIntent()->ActivityA onRestart()->ActivityA onStart()->ActivityA onResume()->ActivityB onSaveInstance()->ActivityB onStop()(經測試)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章