1、Android生命周期
1.1 生命周期圖
圖片
1.2 生命周期函數(shù)說明
- onCreate:Activity正在創(chuàng)建,生命周期的第一個方法,需要setContentView加載layout。這里不建議耗時操作,只做layout和控件初始化。此方法傳遞一個 Bundle 對象,可以獲取上一個Activity 的狀態(tài)。
- onStart:Activity正在啟動,此時Activity已處于可見狀態(tài),只是還沒有在前臺顯示,因此無法與用戶進行交互,這里也可以初始化控件,但官方推薦在onCreate進行。如果 Activity 轉(zhuǎn)入前臺,則后接 onResume,如果 Activity 轉(zhuǎn)入隱藏狀態(tài),則后接 onStop。
- onResume:Activity已在前臺可見,可以跟用戶進行交互,并且該Activity處于堆棧的頂層,可在此初始化一些資源,后接onPause方法。
- onPause:跳轉(zhuǎn)到其他activity時調(diào)用,此方法中可以做一些數(shù)據(jù)存儲或者動畫停止或者資源回收的操作,但不能太耗時,因為android中指定onPause在500ms內(nèi)沒有執(zhí)行完畢的話就會強制關(guān)閉Activity。如果Activity返回前臺,則后接onResume,如果Activity轉(zhuǎn)入對用戶不可見狀態(tài),則后接onStop。
- onStop:表示Activity即將停止或者完全被覆蓋,此時Activity不可見,僅在后臺運行,也就是還在內(nèi)存中,還沒有被銷毀,可以做一下非耗時操作。如果Activity恢復與用戶的交互,則后接onRestart,如果Activity被銷毀,則后接onDestroy
- onRestart:Activity在這時可見,當用戶按Home鍵切換到桌面后又切回來或者從后一個Activity切回前一個Activity就會觸發(fā)這個方法在,始終后接onStart。
- onDestory:在Activity被銷毀前調(diào)用,activity結(jié)束(調(diào)用finish)或者系統(tǒng)內(nèi)存不夠需銷毀activity時調(diào)用,可以根據(jù)isFinishing()方法區(qū)分這兩種情形??勺龌厥展ぷ骱妥罱K的資源釋放。
2、Fragment生命周期
2.1 生命周期圖
圖片
2.2 生命周期函數(shù)說明
fragment被創(chuàng)建的時候,經(jīng)歷包含onAttach、onCreate、onCreateView、onActivityCreated方法;fragment對用戶可見的時候,經(jīng)歷包含onStart、onResume方法;fragment進入“后臺模式”的時候,經(jīng)歷onPause、onStop方法;fragment被銷毀了(或者持有它的activity被銷毀了),經(jīng)歷包含onPause、onStop、onDestroyView、onDestroy、onDetach方法;并且可用onCreate、onCreateView、onActivityCreated方法Bundle對象保存一個fragment的對象。
- onAttach:當Fragment與Activity發(fā)生關(guān)聯(lián)時調(diào)用
- onCreate:創(chuàng)建Fragment時被回調(diào),經(jīng)歷暫?;蛲V範顟B(tài)繼而恢復后,想保留Fragment的基本組件,則在此進行初始化。
- onCreateView:首次繪制頁面時候調(diào)用,在此可以創(chuàng)建View,也可以返回null,這樣不建議耗時操作。
- onActivityCreated:Fragment綁定Activity,在onCreate方法已經(jīng)執(zhí)行完成并返回,在該方法內(nèi)可以進行與Activity交互的UI操作,不能在此之前跟Activity進行交互。
- onStart:啟動 Fragment 時被回調(diào),此時Fragment可見,只是還沒有在前臺顯示,因此無法與用戶進行交互
- onResume:Fragment在前臺可見,處于活動狀態(tài),用戶可與之交互
- onPause:Fragment處于暫停狀態(tài),但依然可見,用戶不能與之交互
- onStop:停止Fragment回調(diào),F(xiàn)ragment完全不可見
- onDestoryView:銷毀與Fragment有關(guān)的視圖,但未與Activity解除綁定
- onDestory:銷毀 Fragment 時被回調(diào),通常按Back鍵退出或者Fragment被回收時調(diào)用此方法,此后接onDetach
- onDetach:與onAttach相對應,當Fragment與Activity關(guān)聯(lián)被取消時調(diào)用
- setUserVisibleHint:調(diào)用次方法可以設(shè)置Fragment可見或者不可見。可以調(diào)用getUserVisibleHint()獲得Fragment的可見或不可見狀態(tài),如果可見則進行懶加載操作