Activity切換的時候生命周期的變化


之前在做筆試題的時候遇到一個問題: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()方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM