之前在做筆試題的時候遇到一個問題:Activity A切換到ActivityB時,A和B的生命周期變化。
事實上,它們的生命周期變化是這樣的:
1、A的onPause()方法被執行。
2、B的onCreate()方法,onStart(),onResume()方法被順序執行。
3、如果B是不透明的,A將會完全被隱藏,此時A完全不可見,A的onStop()方法就會被執行。
問題一:為什么要先執行A的onPause方法,再執行B的生命周期方法?
問題二:為什么不是執行完A的onStop方法之后再執行B的生命周期方法?
要先停止A中的操作,比如播放的音樂等等,不然切換到B音樂還在播放。
若是先執行完A的onStop方法之后再執行B的生命周期方法,會出現黑屏的現象。
生命周期回調的確定的順序允許管理兩個Activity之間的切換信息。例如,當第一個Activity終止時你必須把數據寫到數據庫中以便下一個Activity能夠讀取它,那么你就應該在onPause()方法執行期間把數據寫入數據庫,而不是在onStop()方法執行期間。
我們注意到Activity B是在Activity A的onPause()方法執行完之后才執行自己的生命周期的,如果A的onPause()中有非常耗時的代碼,那么將會影響到B的啟動速度。因此,我們要在onPause()中做盡可能少的工作來提高頁面的切換速度。
接下來我們看另外一種情況:在B中按下返回鍵回到A,那么生命周期怎么變化呢?
1、B執形onPause()方法。
2、A執形onRestart()方法,onStart()方法,onResume()方法。
3、B執形onStop()方法,onDestroy()方法。