之前在做筆試題的時候遇到一個問題:Activity A切換到ActivityB時,A和B的生命周期變化。 事實上,它們的生命周期變化是這樣的: 1、A的onPause()方法被執行。 2、B的onCreate()方法,onStart(),onResume()方法被順序執行。 3、如果B是不透明的,A ...
之前在做筆試題的時候遇到一個問題: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()方法。