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()(經測試)