android 活動的生命週期

來源:互聯網
上載者:User

標籤:重寫   dff   首頁   https   fda   資源   rap   class   sig   

掌握活動的生命週期非常重要,因為一個正常的android應用,會有很多的活動,如何在這些活動之間進行切換、資料的互動等,就經常會用到活動的生命週期這一塊的知識。可以說,只要掌握了活動的生命週期,才能更流暢的寫android的程式。

工具/原料 
  • android環境
一.返回棧 
  1. 1

    棧大家都知道,一個最基礎的資料結構。擁有著後進先出的特性。就好比一個瓶子,我們往裡面放乒乓球,最後放的乒乓球肯定在瓶子的最上面,所以,當我們要從瓶子裡拿乒乓球的時候,最後放的乒乓球會最先被拿出來,這就是最基礎的棧

  2. 2

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

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

  3. 3

    所以,android中的活動是層疊的,每啟動一個新的活動,活動就會被加入棧的頂端,成為topactivity,覆蓋在原先的topactivity之上,點擊返回鍵會銷毀最上面的活動,而下面的一個活動就會重新成為topactivity

    END
二.活動狀態 
  1. 1

    活動總共有4種狀態:

    1)運行狀態;

    2)暫停狀態;

    3)停止狀態;

    4)銷毀狀態

  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();

  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"

  3.  

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

  4.  

    OK,現在讓我們點擊表徵圖,啟動這個應用程式;

    發現,調用了3個函數。

  5.  

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

  6.  

    在這個程式中啟動另一個活動。

  7.  

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

  8.  

    現在,再啟動另一個對話方塊式的activity

  9.  

    再重新回到這個activity

    END
四.活動的生命週期 
  1. 1

    從上面說的可以看出,活動分為;

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

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

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

     

android 活動的生命週期

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.