# 組件之Activity生命周期和注意點

引言


說到Activity,就會想到它的聲明周期,面試官也經常會問。所以我們來說明一下。

聲明周期


activity_lifecycle.png

除了上圖還有四個回調方法,如下:

  • onContentChanged
  • onPostCreate
  • onPostResume
  • onConfigurationChanged

綜合起來一共11個方法,我們按照觸發(fā)順序說明:

  • onCreate()
    初始化Activity數(shù)據(jù),同時setConentView(view),設置好布局。
  • onContentChanged
    當Activity布局變動的時候觸發(fā),setContentView 和 addContentView 方法執(zhí)行完畢后調用該方法,onCreate方法中有setContentView,所以會觸發(fā)此方法。
  • onPostCreate()
    當onCreate()方法執(zhí)行完畢后觸發(fā)。
  • onStart()
    調用這個方法的時候,界面被用戶所看見,但是不能交互即點擊啊什么的。
  • onResume()
    可見且可以進行交互,執(zhí)行這個方法后,Activity就會處于running狀態(tài)。
  • onPause()
    整個窗口被半遮蓋或者半透明的時候會執(zhí)行這個方法,即當你想離開這個Activity,或者想進入下一個Activity,處于半遮蓋或者半透明狀態(tài)就會被調用。
  • onPostPause()
    和onPostCreate()類似,也是當onPause()執(zhí)行完畢后調用此方法徹底執(zhí)行完畢的回調。
  • onStop()
    當Activity整個窗口都被遮蓋的時候會被觸發(fā)。當然完全被遮蓋之前肯定會經歷半遮蓋的過程,所以onPause()方法肯定先被調用。
  • onDestory()
    在這里做資源的回收與銷毀,引用在這時候會被自動回收且銷毀,但是線程不會被自動回收,所以你需要手動在這個方法中清楚開啟的線程,或者其他資源。

注意點


  • 當處于半透明,半遮蓋狀態(tài)的時候,又回到Activity,就會重回界面,即會執(zhí)行onResume()方法。
  • 當處于全遮蓋的時候,即執(zhí)行完onStop()方法后,又重回界面,這時候就會調用onRestart()方法,再執(zhí)行onStart()方法,onResume()重新回到界面。
  • 還有ANR問題,當處于onPause(),onStop即全遮蓋或者半遮蓋狀態(tài)的時候,內存占用過多,Activity就有可能被回收,回收后重新回到Activity,就會執(zhí)行onCreate()方法執(zhí)行Activity的聲明周期。

總結


  • 靈活運用聲明周期,可以做到很舒服的用戶體驗。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容