Activity的生命週期收藏備用,新手必看

來源:互聯網
上載者:User

標籤:des   android   style   http   os   io   資料   ar   

Android官方文檔裡對Activity的生命週期有比較詳盡的描述,但由於資源回收機制帶來不確定性,我們的程式運行結果常常與預期的不符,而調試這類問題又十分消耗時間和精力。解決的根本辦法還是要理解透Activity的生命週期及相關內容,這篇文章著重介紹Activity生命週期本身,之後會用一兩篇文章來介紹如何處理異常的狀態變化。

是官方文檔裡的Activity生命週期圖,其中彩色標出的四個框是Activity的四種狀態,當Activity的狀態改變時會觸發一個或多個onXXX()方法。

onCreate()

當Acitivity第一次被建立時觸發,一般在這裡要做的事情包括建立視圖(setContentView())、向視圖填充必要的資料等等。

onRestart()

這個我比較少用到,按文檔上的介紹,如果Activity之前被stop過,那麼下一次onStart()方法之前會先觸發這個方法。

onStart()

只要Activity從不可見變成可見,就會觸發到這個方法,但被AlertDialog遮擋/顯示的情況不算在內。

onResume()

當Activity來到最上層的時候,也就是開始與使用者直接互動時,觸發這個方法。例如本來Activity被一個AlertDialog遮擋,當這個AlertDialog消失時,onResume()方法就被觸發。

onPause()

和onResume()的觸發條件剛好相反,如果Activity本來在最上層,當它要讓出最上層的位置時會觸發這個方法。onPause()和onResume()是被觸發最頻繁的兩個方法,所以在這裡不應該執行過於消耗資源的方法。

onStop()

當有其他Activity覆蓋了當前Activity時,不論另一個Activity是新開始的還是從下層移至最上層的,當前Activity的onStop()方法都會被觸發。

onDestroy()

Activity生命週期的終點。有兩種情況會導致它被觸發:1)執行了Activity#finish()方法;2)Android系統由於資源不足等原因決定殺掉Activity所在進程。通過isFinishing()方法可以判斷出是哪種情況。在這個方法裡,我們一般要做的事情是釋放Activity佔有的資源,例如後台進行中的下載線程等等。

最後,舉個實際例子來說明,假設你有一個“首頁Activity”和一個“編輯頁Activity”。

  • 當使用者點擊首頁裡的“開始編輯”按鈕時,首頁的onPause()->onStart()onStop()依次觸發,編輯頁的onCreate()->onStart()->onResume()依次觸發;(感謝James.H.Fu指出的錯誤)

  • 當使用者在編輯頁按下“返回”按鈕時,編輯頁的onPause()->onStop()依次觸發,之後首頁的onStart() -> onResume()依次觸發;

  • 這時使用者在首頁按下“返回”按鈕,首頁的onPause()->onStop()->onDestroy()依次觸發。

參考資料:

Activity Lifecycle
Simplest Android Activity Lifecycle
Activity lifecycle explained in details

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.