天天看點

重溫Acticity和Fragment生命周期

重溫下Android和Fragment生命周期,了解生命周期方法的作用,什麼時候調用,可以做一些什麼操作。

1、Android生命周期

1.1 生命周期圖

重溫Acticity和Fragment生命周期

1.2 生命周期函數說明

  • onCreate:Activity正在建立,生命周期的第一個方法,需要setContentView加載layout。這裡不建議耗時操作,隻做layout和控件初始化。此方法傳遞一個 Bundle 對象,可以擷取上一個Activity 的狀态。
  • onStart:Activity正在啟動,此時Activity已處于可見狀态,隻是還沒有在前台顯示,是以無法與使用者進行互動,這裡也可以初始化控件,但官方推薦在onCreate進行。如果 Activity 轉入前台,則後接 onResume,如果 Activity 轉入隐藏狀态,則後接 onStop。
  • onResume:Activity已在前台可見,可以跟使用者進行互動,并且該Activity處于堆棧的頂層,可在此初始化一些資源,後接onPause方法。
  • onPause:跳轉到其他activity時調用,此方法中可以做一些資料存儲或者動畫停止或者資源回收的操作,但不能太耗時,因為android中指定onPause在500ms內沒有執行完畢的話就會強制關閉Activity。如果Activity傳回前台,則後接onResume,如果Activity轉入對使用者不可見狀态,則後接onStop。
  • onStop:表示Activity即将停止或者完全被覆寫,此時Activity不可見,僅在背景運作,也就是還在記憶體中,還沒有被銷毀,可以做一下非耗時操作。如果Activity恢複與使用者的互動,則後接onRestart,如果Activity被銷毀,則後接onDestroy
  • onRestart:Activity在這時可見,當使用者按Home鍵切換到桌面後又切回來或者從後一個Activity切回前一個Activity就會觸發這個方法在,始終後接onStart。
  • onDestory:在Activity被銷毀前調用,activity結束(調用finish)或者系統記憶體不夠需銷毀activity時調用,可以根據isFinishing()方法區分這兩種情形。可做回收工作和最終的資源釋放。

2、Fragment生命周期

2.1 生命周期圖

重溫Acticity和Fragment生命周期

2.2 生命周期函數說明

fragment被建立的時候,經曆包含onAttach、onCreate、onCreateView、onActivityCreated方法;fragment對使用者可見的時候,經曆包含onStart、onResume方法;fragment進入“背景模式”的時候,經曆onPause、onStop方法;fragment被銷毀了(或者持有它的activity被銷毀了),經曆包含onPause、onStop、onDestroyView、onDestroy、onDetach方法;并且可用onCreate、onCreateView、onActivityCreated方法Bundle對象儲存一個fragment的對象。

  • onAttach:當Fragment與Activity發生關聯時調用
  • onCreate:建立Fragment時被回調,經曆暫停或停止狀态繼而恢複後,想保留Fragment的基本元件,則在此進行初始化。
  • onCreateView:首次繪制頁面時候調用,在此可以建立View,也可以傳回null,這樣不建議耗時操作。
  • onActivityCreated:Fragment綁定Activity,在onCreate方法已經執行完成并傳回,在該方法内可以進行與Activity互動的UI操作,不能在此之前跟Activity進行互動。
  • onStart:啟動 Fragment 時被回調,此時Fragment可見,隻是還沒有在前台顯示,是以無法與使用者進行互動
  • onResume:Fragment在前台可見,處于活動狀态,使用者可與之互動
  • onPause:Fragment處于暫停狀态,但依然可見,使用者不能與之互動
  • onStop:停止Fragment回調,Fragment完全不可見
  • onDestoryView:銷毀與Fragment有關的視圖,但未與Activity解除綁定
  • onDestory:銷毀 Fragment 時被回調,通常按Back鍵退出或者Fragment被回收時調用此方法,此後接onDetach
  • onDetach:與onAttach相對應,當Fragment與Activity關聯被取消時調用
  • setUserVisibleHint:調用次方法可以設定Fragment可見或者不可見。可以調用getUserVisibleHint()獲得Fragment的可見或不可見狀态,如果可見則進行懶加載操作

繼續閱讀