標籤:attach rest onpause onrestart 導致 star tor 彈出對話方塊 cti
探究Activity的生命週期
1.典型情況下的生命週期分析:onCreate 初始化工作,載入布局資源和資料;onStart ac正在啟動但是無法互動,後台;onResume ac可見,顯示在前台;onPause 正在停止,必須先執行完才能執行新的ac;Onstop 即將停止,回收工作;onDestory 即將銷毀,回收與資源釋放;onRestart 重新啟動
2.onStart和onResume、onPause和onStop,有什麼實質的不同。
答:onStart和onResume是從Activity是否可見這個角度來回調的;後者是從Activity是否位於前台這角度來回調的。
3.在新Activity啟動之前,棧頂的Activity需要先onPause後,新Activity才能啟動。不能在onPause中做重量級的操作,因為必須onPause執行完成以後新的Activity才能Resume。所以:我們知道onPause和onStop都不能執行耗時的操作,尤其是onPause,這也意味著,我們應當盡量在onStop中做操作,從而使得新Activity儘快顯示出來並切換到前台
4.異常情況下的生命週期分析
- )情況1:資源相關的系統配置發生改變導致Activity被殺死並且重新建立
- 例子:當前Activity處於豎屏狀態,如果突然旋轉螢幕,由於系統配置發生改變,預設情況下Activity就好被銷毀並且重新建立。
- 在這種意外情況下,系統會調用onSaveInstanceState來儲存當前Activity的狀態。這個方法只在異常終止的情況下出現,當新的Activity被建立後,系統會調用onRestoreInstanceState取出之前儲存的資料並且恢複。從時序上來說,onRestoreInstanceState的調用時機在onStart之後。
- 和Activity一樣,每個View都有S和R,都是通過委託思想,上層委託下層,例如TextView會儲存自己的文本選中狀態和常值內容。
- )資源記憶體不足導致低優先的Activity被殺死
1.比較好的方法是將後台工作放在Service中從而保證進程有一定的優先順序。
2.Activity按照優先順序來分:前台Activity(正在和使用者互動)>可見但非前台Activity(彈出對話方塊後,不能直接互動)>後台Activity(被暫停)。
Android藝術——深看Activity的生命週期