Android 3.0 (Api 11)引入;
Fragment具有重用,易适配(平闆和手機之間的)優點;
依賴Activity,生命周期受到Activity的生命周期影響;
fragment生命周期每個方法的作用:
onAttach()
在片段已與 Activity 關聯時調用(Activity 傳遞到此方法内)。
onCreate()
系統會在建立片段時調用此方法。您應該在實作内初始化您想在片段暫停或停止後恢複時保留的必需片段元件。
onCreateView()
調用它可建立與片段關聯的視圖層次結構。
onActivityCreated()
在 Activity 的 onCreate() 方法已傳回時調用。
onStart()
執行該方法時,Fragment由不可見變為可見狀态。
onResume()
執行該方法時,Fragment處于活動狀态,使用者可與之互動。
onPause()
執行該方法時,Fragment處于暫停狀态,但依然可見,使用者不能與之互動。
onStop()
執行該方法時,Fragment完全不可見。
onDestroyView()
在移除與片段關聯的視圖層次結構時調用。
onDestory()
銷毀Fragment。通常按Back鍵退出或者Fragment被回收時調用此方法。
onDetach()
在取消片段與 Activity 的關聯時調用。
Activity和Fragment生命周期對比:
Fragment生命周期執行流程:
Fragment建立:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
Fragment變為不可見狀态(鎖屏、回到桌面、被Activity完全覆寫):onPause()->onSaveInstanceState()->onStop();
Fragment變為部分可見狀态(打開Dialog樣式的Activity):onPause()->onSaveInstanceState();
Fragment由不可見變為活動狀态:onStart()->OnResume();
Fragment由部分可見變為活動狀态:onResume();
退出應用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不會調用onSaveInstanceState方法,因為是人為退出,沒有必要再儲存資料);
Fragment被回收又重新建立:被回收執行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新建立執行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();
橫豎屏切換:與Fragment被回收又重新建立一樣。
參考:
https://developer.android.com/guide/components/fragments.html
http://blog.csdn.net/u013519989/article/details/53117460