Fragment及其生命週期淺析
Fragement表示Activity中的行為或使用者介面部分。可以將多個片段組合在一個Activity中來構建多窗格UI,以及在多個Activity中重複使用某個片段。可以將片段視為Activity的模組化組成部分,它具有自己的生命週期,能接收自己的輸入事件,並且可以在Activity執行時新增或移除片段
片段必須始終嵌入在Activity中,其生命週期受宿主Activity生命週期的影響:
當Activity暫停時,其中的所有片段也會暫停;當Activity被銷燬時,所有片段也會被銷燬。
建立片段:
建立片段,必須建立Fragment的子類。Fragment類的程式碼與Activity
onCreate():建立片段時呼叫此方法。可以在片段暫停或停止後恢復時保留的必需片段元件。
onCreateView(): 片段首次繪製其使用者介面呼叫的方法,通過返回片段佈局View來顯示片段UI
onPause(): 使用者離開片段的第一個訊號(但不總是意味著此片段會被銷燬)
處理片段生命週期:
片段以三種狀態存在:
繼續: 片段在執行中的Activity中可見
暫停: 另一個 Activity 位於前臺並具有焦點,但此片段所在的 Activity
停止: 片段不可見。宿主 Activity 已停止,或片段已從 Activity 中移除,但已新增到返回棧。 停止片段仍然處於活動狀態(系統會保留所有狀態和成員資訊)。 不過,它對使用者不再可見,如果 Activity 被終止,它也會被終止。
小訣竅:
1、同樣與 Activity 一樣,假使 Activity 的程序被終止,而您需要在重建 Activity 時恢復片段狀態,您也可以使用 Bundle 保留片段的狀態。您可以在片段的 onSaveInstanceState() 回撥期間儲存狀態,並可在 onCreate()、onCreateView()
Activity 生命週期與片段生命週期之間的最顯著差異在於它們在其各自返回棧中的儲存方式。 預設情況下,Activity 停止時會被放入由系統管理的 Activity 返回棧(以便使用者通過返回按鈕回退到 Activity,任務和返回棧對此做了闡述)。不過,僅當您在移除片段的事務執行期間通過呼叫 addToBackStack() 顯式請求儲存例項時,系統才會將片段放入由宿主 Activity 管理的返回棧。
與Activity生命週期協調一致:片段所在的Activity的生命週期會直接影響片段的生命週期,表現為Activity的每次生命週期回撥都會引發每個片段的類似回撥,如Activity收到onPause時,Activity的每個片段也會收到onPause()。
onAttach(): 在片段已與Activity關聯時呼叫(Activity傳遞到此方法內)
onCreateView(): 呼叫它可建立與片段關聯的檢視層次結構。
onActivityCreated(): 在Activity的onCreate()方法已返回時呼叫
onDestroyView(): 移除與片段關聯的檢視層次結構時呼叫
onDetach(): 取消與Activity的關聯時呼叫
.