android 活動的生命週期

掌握活動的生命週期很是重要,由於一個正常的android應用,會有不少的活動,如何在這些活動之間進行切換、數據的交互等,就常常會用到活動的生命週期這一塊的知識。能夠說,只要掌握了活動的生命週期,才能更流暢的寫android的程序。html

工具/原料

 
  • android環境

一.返回棧

 
  1. 1

    棧你們都知道,一個最基礎的數據結構。擁有着後進先出的特性。就比如一個瓶子,咱們往裏面放乒乓球,最後放的乒乓球確定在瓶子的最上面,因此,當咱們要從瓶子裏拿乒乓球的時候,最後放的乒乓球會最早被拿出來,這就是最基礎的棧android

    android 活動的生命週期
  2. 2

    而activity是使用任務來管理的,一個任務就是一組存在棧裏的活動的集合,這個棧就是返回棧。數據結構

    意思就是,一個android系統中會有多個任務,而一個任務就就對應着一個返回棧。app

    android 活動的生命週期
  3. 3

    因此,android中的活動是層疊的,每啓動一個新的活動,活動就會被加入棧的頂端,成爲topactivity,覆蓋在原先的topactivity之上,點擊返回鍵會銷燬最上面的活動,而下面的一個活動就會從新成爲topactivity函數

    android 活動的生命週期
    END

二.活動狀態

 
  1. 1

    活動總共有4種狀態:工具

    1)運行狀態;spa

    2)暫停狀態;3d

    3)中止狀態;htm

    4)銷燬狀態blog

  2. 2

    1)運行狀態

    當一個活動位於返回棧的棧頂,就處於運行狀態了。系統是不會去回收運行狀態的活動的。試問,你正在玩遊戲,結果系統給你回收了,一下回到主頁了,你內心確定不爽的。

  3. 3

    2)暫停狀態

    若是我如今啓動了一個新的活動,但這個活動並無佔滿全屏,因此你仍然能夠從旁邊的空餘空間看到後面的activity,然後面的這個activity就處於暫停狀態。位於暫停狀態的活動,系統通常也不會回收的。由於用戶可能會很快點擊返回鍵從新回到這個活動中來。試問,若是你在當前的主活動中彈出了一個對話框,你選擇完返回後,發現界面不在了,內心確定是不爽的。固然,若是內存真的很低很低了,系統纔會考慮回收。不過如今的手機內存都很大,通常不多出現這種情況了。

  4. 4

    3)中止狀態

    當一個活動徹底不可見,就處於中止狀態了。好比,你在一個activity中啓動了第二個activity,第一個activity就處於中止狀態了。處於中止狀態的活動,他的數據和狀態是不可靠的,由於系統可能會回收這一塊數據。但不用擔憂,這些數據實際上是能夠經過代碼保存起來的、

  5. 5

    4)銷燬狀態

    當一個活動從返回棧移除,好比,我按了返回鍵,這個活動就被移除了。此時,活動就進入了銷燬狀態,系統很是樂意銷燬這一塊數據,固然,用於也會很是樂意系統去銷燬這一塊數據。否則,活動都不被銷燬,那要佔用多少的資源啊,手機很快就跪了。

    END

三.活動的生存期 -- 7個回調方法

 
  1. 1

    活動有7個方法,分別是:

    1)onCreate();

    2)onStart();

    3)onResume();

    4)onPause();

    5)onStop();

    6)onDestroy();

    7)onRestart();

    android 活動的生命週期
  2. 2

    1)onCreate()

    這個方法在活動第一次建立的時候會被調用。注意,是第一次建立。若是活動從中止狀態從新進入運行狀態,是不會調用這個方法的

  3. 3

    2)onStart()

    這個活動由不可見進入可見的時候調用。好比,當從中止狀態進入到運行狀態會調用。好比,一個activity中打開一個對話框,再按返回鍵從新進入這個活動,這個方法是不會被調用的。

  4. 4

    3)onResume()

    當活動準備好和用戶進行交互的時候調用。舉例,如今許多同窗在一塊兒賽跑,老師說,下一組要跑步的走到起跑線,準備跑。此時就是onResume(),此時的活動必定位於前臺,學生必定站在了跑道上,一個道理。

  5. 5

    4)onPause()

    當前活動須要去啓動另外一個活動,或者恢復另外一個活動的時候去調用。這個方法中,咱們能夠將一些CPU資源等釋放掉,由於當你不在前臺了,處於暫停或者中止甚至是銷燬狀態了,就應該讓出一些資源,減小系統的負擔。

  6. 6

    5)onStop()

    活動徹底不可見的時候調用。好比,當前activity啓動了一個對話框式的活動,那麼是不會執行onStop()的。但啓動了一個全屏的activity,就會獲得調用。

  7. 7

    6)onDestroy()

    這個很好理解,不用多說了,活動被銷燬了,按返回鍵了,或者finish等

  8. 8

    7)onRestart()

    由中止狀態變爲運行狀態了,被調用。若是是暫停狀態變爲運行狀態,是不會被調用的。

    END

四.舉例說明

 
  1.  

    如今寫一個android程序,具體程序代碼就不寫了。這個程序主要有如下幾個功能:

    1)主activity,內有2個按鈕,一個是啓動一個新的acvitityA,另外一個是啓動一個對話框式的activityB;

    2)新添一個activityA,是全屏的;

    3)新添一個activityB,是對話框的;

    4)從新主activity的七大回調函數。

  2.  

    這裏簡單的寫下代碼。

    如何建立一個對話框式的activity?

    很簡單,修改下清單文件中activity的註冊便可

    <activity

                android:name="com.example.activitytest.DialogActivity"

                android:label="@string/app_name"

                android:theme="@android:style/Theme.Dialog" >

            </activity>

    增長了android:theme="@android:style/Theme.Dialog"

    android 活動的生命週期
  3.  

    修改主活動的代碼,重寫7個回調函數

    android 活動的生命週期
  4.  

    OK,如今讓咱們點擊圖標,啓動這個應用程序;

    發現,調用了下圖3個函數。

    android 活動的生命週期
  5.  

    此時再點擊返回鍵,退出程序,調用了下圖的函數。

    android 活動的生命週期
  6.  

    在這個程序中啓動另外一個活動。

    android 活動的生命週期
  7.  

    在第二個活動中安返回鍵,從新回到這個活動

    android 活動的生命週期
  8.  

    如今,再啓動另外一個對話框式的activity

    android 活動的生命週期
  9.  

    再從新回到這個activity

    android 活動的生命週期
    END

四.活動的生命週期

 
  1. 1

    從上面說的能夠看出,活動分爲;

    完整生存期:onCreate()方法和onDestroy()之間,總共調用了6個方法。

    可見生存期:活動在onStart()方法和onStop()之間,總共4個方法,再加上從新運行的onRestart()方法,總共5個。

    前臺生存期:活動在onResume()方法和onPause()方法,總共2個方法。

相關文章
相關標籤/搜索