Fragment 生命週期的詳情

2022-09-08 11:42:14 字數 2025 閱讀 3133

fragment每個生命週期方法的意義、作用(注意紅色的不是生命週期方法):

setuservisiblehint():設定fragment可見或者不可見時會呼叫此方法。在該方法裡面可以通過呼叫getuservisiblehint()獲得fragment的狀態是可見還是不可見的,如果可見則進行懶載入操作。

onattach():執行該方法時,fragment與activity已經完成繫結,該方法有乙個activity型別的引數,代表繫結的activity,這時候你可以執行諸如mactivity = activity的操作。

oncreate():初始化fragment。可通過引數s**edinstancestate獲取之前儲存的值。

oncreateview():初始化fragment的布局。載入布局和findviewbyid的操作通常在此函式內完成,但是不建議執行耗時的操作,比如讀取資料庫資料列表。

onactivitycreated():執行該方法時,與fragment繫結的activity的oncreate方法已經執行完成並返回,在該方法內可以進行與activity互動的ui操作,所以在該方法之前activity的oncreate方法並未執行完成,如果提前進行互動操作,會引發空指標異常。

onstart():執行該方法時,fragment由不可見變為可見狀態。

onresume():執行該方法時,fragment處於活動狀態,使用者可與之互動。

onpause():執行該方法時,fragment處於暫停狀態,但依然可見,使用者不能與之互動。

ons**einstancestate():儲存當前fragment的狀態。該方法會自動儲存fragment的狀態,比如edittext鍵入的文字,即使fragment被**又重新建立,一樣能恢復edittext之前鍵入的文字。

onstop():執行該方法時,fragment完全不可見。

ondestroyview():銷毀與fragment有關的檢視,但未與activity解除繫結,依然可以通過oncreateview方法重新建立檢視。通常在viewpager+fragment的方式下會呼叫此方法。

ondestroy():銷毀fragment。通常按back鍵退出或者fragment被**時呼叫此方法。

ondetach():解除與activity的繫結。在ondestroy方法之後呼叫。

fragment生命週期執行流程(注意紅色的不是生命週期方法):

fragment建立:setuservisiblehint()->onattach()->oncreate()->oncreateview()->onactivitycreated()->onstart()->onresume();

fragment變為不可見狀態(鎖屏、回到桌面、被activity完全覆蓋):onpause()->ons**einstancestate()->onstop();

fragment變為部分可見狀態(開啟dialog樣式的activity):onpause()->ons**einstancestate();

fragment由不可見變為活動狀態:onstart()->onresume();

fragment由部分可見變為活動狀態:onresume();

退出應用:onpause()->onstop()->ondestroyview()->ondestroy()->ondetach()(注意退出不會呼叫ons**einstancestate方法,因為是人為退出,沒有必要再儲存資料);

fragment被**又重新建立:被**執行onpause()->ons**einstancestate()->onstop()->ondestroyview()->ondestroy()->ondetach(),重新建立執行onattach()->oncreate()->oncreateview()->onactivitycreated()->onstart()->onresume()->setuservisiblehint();

橫豎屏切換:與fragment被**又重新建立一樣。

官方生命週期圖

Fragment生命週期

onattach 當碎片依附活動的時候被呼叫 oncreate 活動被建立 oncreateview 為碎片建立view,載入布局時呼叫 onactivitycreated 確保view已經被建立完畢時呼叫 onstart 活動被開啟,由不可見變為可見 onresume 活動已經準備好和使用者進行互...

Fragment生命週期

與activity類似,碎片有自己的生命週期。當碎片被建立時,會經歷 onattach oncreate oncreateview onactivitycreated 當碎片變得可見時,會經歷 onstart onresume 當碎片進入後台模式時,會經歷 onpause onstop 當碎片被銷毀...

Fragment的生命週期

focus100 面試專題之一fragment的生命週期 面試的時候,如果被面試官問到fragment的生命週期,想必大家直接脫口而出 oncreate oncreateview onactivitycreated on 然後就沒有然後了。學習生命週期不是為了應付面試,背個執行順序就完了,要理解每個...