1. 程式人生 > >activity的生命周期和啟動模式

activity的生命周期和啟動模式

發生 完成 nbsp 本質 top 但是 可見 自動 res

1.常見生命周期說明

技術分享

技術分享

2.兩個常見問題

技術分享

問題一答案:本質上就是onstart和onstop方法是是否可見進行調用,而onresume和onpause是看是否為前臺互動而調用。

問題二答案:先執行a的onpause然後到b的oncreate,onstart,onresume再到b的onstop。啟動一個活動可以簡單理解為啟動activity的請求會由Instrumentation來處理,然後它通過Binder想AMS發送請求,AMS內部維護著一個ActivityStack並負責棧內的Activity的狀態同步,AMS通過ActivityThread去同步Activity的狀態從而完成生命周期方法的調用。

3.異常情況下的生命周期分析

技術分享

1)資源相關的系統配置發生改變導致Activity被殺死並重新創建

2)資源內存不足導致優先級的Activity被殺死

Activity按照優先級從高到低進行分,如下:

技術分享

總結:

當activity在異常狀態下被殺死的時候,其會自動調用onSaveInstanceState()用於保存數據,並把這些數據放在Bundle中,然後再次啟動該活動的時候,該Bundle會發送到onCreate()和onRestoreInstanceState()中,所以我們可以在這兩個方法中進行判斷其是否在異常狀態下被殺死,從而取出數據,兩個方法都可以取出數據,但是有一點的不同,就是onRestoreInstanceState()方法一旦被調用,其Bundle一定會有值,但是onCreate()不一樣,官方推薦,是使用前者進行恢復數據。

註意:只有在activity異常被殺死的情況下才會調用onSaveInstanceState()方法。

代碼實例:

技術分享

activity的生命周期和啟動模式