android Activity 生命週期

一、返回棧(Back Stack)

    棧的特色爲先進後出android

    Android使用task來管理Activity。一個task就是一組放在棧裏的Activity的集合。這個棧也叫作返回棧(Back Stack)spa

    系統老是會顯示處於棧頂的Activity給用戶.net

二、Activity狀態

    2.1 運行狀態:位於棧頂,可見,系統不回收3d

    2.2 暫停狀態:不位於棧頂,可見。內存極低時纔回收。blog

          打開了一個非全屏或者是透明的Activity。例如,打開了一個對話框形式的Activity。可使當前Activity進入到暫停狀態生命週期

    2.3 中止狀態:不位於棧頂,不可見。其餘地方須要內存時會回收內存

    2.4 銷燬狀態:從返回棧中移除,系統回收,釋放內存。資源

三、生命週期

    3.1 涉及到的具體的方法

        onCreate():Activity第一次被建立時調用,在此方法中完成初始化的操做get

        onStart():Activity由不可見變爲可見時調用it

        onResume():Activity準備好與用戶進行交互時調用

        onPause():系統準確去啓動或者是恢復另外一個活動時調用

        onStop():Activity徹底不可見的時候調用

        onDestroy():Activity被銷燬時調用

        onRestart():Activity由中止狀態變成運行狀態以前調用

    3.2 圖表表示

        3.2.1 完整的生命週期

        3.2.2 全部的生命週期

    3.3 文字解釋

        Activity的前臺生存期,主要是在onResume和onPause之間

        Activity的可見週期爲:onStart、onResume、onPause、onStop之間

        Activity的完整的生命週期爲:onCreate、onStart、onResume、onPause、onStop、onDestroy

四、Activity A啓動B生命週期爲

    A剛啓動時:

    A啓動B時:

    B位於棧頂時,點擊返回鍵:

    在上面的截圖中能夠看出,A啓動B時,會先執行A的onPause方法,因此爲了屏幕過分的天然,給用戶一個比較好的體驗,建議onPause方法中不要執行一些耗時的操做

五、Activity資源被回收的時候,生命週期

    在onStop方法調用以前會調用onSaveInstanceState(Bundle outState)方法。將所須要保存的數據存儲到參數bundle中

    能夠在onCreate(@Nullable Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceState)方法裏,從參數Bundle 中獲取已經保存的數據。若是Activity第一次建立時,onCreate方法的參數爲空。可是調用了onRestoreInstanceState方法,那麼參數確定不會爲空。

    關於保存和恢復View層次結構,系統工做遵循的是一種委託思想:上層委託下層,父元素委託子元素去進行處理。

    當系統配置改變,致使Activity被回收,能夠經過配置android:configChanges屬性,讓Activity不被殺死。可是依然會調用onConfigurationChanged(Configuration newConfig)方法。例如橫豎屏發生改變的時候,爲了防止Activity被回收從新建立,設置:android:configChanges="orientation"

相關文章
相關標籤/搜索