首頁 > 常見問題 > activity生命週期方法

activity生命週期方法

(*-*)浩
發布: 2019-06-05 11:38:03
原創
16618 人瀏覽過

最近回顧了一下關於Activity的生命週期,參看了相關書籍和官方文檔,也有了不小的收穫,對於以前的認知有了很大程度上的改善,在這裡和大家分享一下。

activity生命週期方法

Activity相當於一個servlet,我們的Activity處在這個容器中,一切創建實例、初始化、銷毀實例等過程都是容器來呼叫的,這也就是所謂的「Don't call me, I'll call you.」機制。 (推薦學習:Java影片教學

讓我們來看看這一張經典的生命週期流程圖:

activity生命週期方法

onCreate():
當activity是被建立時候,會自動執行該方法。這個方法做一些初始化動作,例如創建views,設定資料到list等等,該方法提供了一個Bundle類型的變量,該變量中有這個activity以前的狀態信息,前提是以前存過這些信息。這個方法執行完後執行的是onStart()方法;若在onCreate方法中加入finish()方法,onCreate下一個執行onDestroy方法

onRestart():
把activity從onStop狀態喚醒時,會用onRestart方法,該方法優先於再次運行的onStart,運行完onRestart之後運行onStart。若在onRestart()方法中加入finish()語句,則還是會繼續執行onStart及後面的狀態方法直到onDestroy運行完

onStart():
當activity對使用者可見時會呼叫onStart,當activity在前台顯示時,會運行onResume;當activity還沒在前台顯示就被隱藏(停止狀態)了會運行onStop(),比如在onStart方法中用了finish()方法的話,onStart()之後就會直接運行onStop->onDestroy。

onResume():
當activity開始與使用者互動時,會呼叫onResume,並且為了使用者操作此時該activity位於activity堆疊的頂端。經過某些操作後該方法執行完後執行的是onPause()

onPause():
當一個activity運行到onResume方法後,不管是這個activity要銷毀還是要暫停或停止,都會呼叫該方法。這個方法之後有可能是onResume也有可能是onStop,若是在這個activity-A中打開一個不完全覆蓋這個activity-A的新activity-B,那麼activity-A就會是onPause狀態,當activity-B退出時,activity-A就直接運行onResume(前提是onPause的方法執行完了,否則會等onPause方法執行完後才運行onResume方法,所以不建議在這個方法中執行CPU密集的操作)。若是需要退出activity-A,那麼下一個就會執行onStop。 onPause()用於提交未保存發生變化了的持久化數據,及停止動畫及其他其他比較消耗CPU的事件(例如廣播接收器,感測器(例如GPS),或消耗電量的資源),這是為了更好的運行新的activity

onStop():
當這個activity完全看不見的時候,會呼叫onStop方法,因為另一個activity會呼叫onResume並且覆寫這個activity 。以下三種情況都會使這個activity呼叫onStop()方法,第一種是一個新的activity被執行,第二種是一個已經存在的activity被切換到最前端,第三種是這個activity要被銷毀。如果透過使用者召回這個activity,那麼會呼叫onRestart方法;若這個activity要被銷毀,則呼叫onDestroy方法

onDestroy():
當activity銷毀前會呼叫該方法,例如發生以下情況:activity呼叫了finish()方法來結束這個activity,或者因為系統為了節省空間而臨時銷毀這個activity,這兩個情況可以透過isFinishing()方法判斷

#更多Java相關技術文章,請造訪Java開發教學欄位進行學習!

以上是activity生命週期方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板