Fragment生命周期
onAttach
onCreate
onCreateView
onActivityCreate? ? ? ? ? ? ? ? ______以上相當于Activity的onCreate方法
onStart? ? ? ? ? ? ? ? ? ? ? ? ? ? ?______相當于Activity的onStart方法
onResume? ? ? ? ? ? ? ? ? ? ? ? ______相當于Activity的onResume方法
onPause? ? ? ? ? ? ? ? ? ? ? ? ? ?______相當于Activity的onPause方法
onStop? ? ? ? ? ? ? ? ? ? ? ? ? ? ?______相當于Activity的onStop方法
onDestroyView
onDestroy
onDetach? ? ? ? ? ? ? ? ? ? ? ? ?______以上相當于Activity的onDestroy方法
當Activity包含一個Fragment的時候,Activity和Fragment生命周期的變化:
Activity(onCreate)---> Fragment(onAttach onCreate onCreateView onActivityCreate)--->
Activity(onStart)---> Fragment(onStart)--->
Activity(onResume)---> Fragment(onResume)--->
Fragment(onPause)---> Activity(onPause)--->
Fragment(onStop)---> Activity(onStop)--->
Fragment(onDestroyView onDestroy onDetach)---> Activity(onDestroy)
由于Fragment依附于Activity,所以啟動的時候Activity的方法肯定在前面,Fragment的方法在后面,但是在要銷毀的時候,Fragment的方法先執行,再執行Activity的方法。
在宿主Activity中使用hide、show方式切換Fragment的時候,Fragment的生命周期是:
a 初始化
Fragment1(onAttach onCreate onCreateView onActivityCreate) --->? Fragment1(onStart)---> Fragment1(onResume)
Fragment2(onAttach onCreate onCreateView onActivityCreate) --->? Fragment2(onStart)---> Fragment2(onResume)
b Fragment1和Fragment2來回切換都沒有回調生命周期
c 當某一個Fragment調用了跳轉到另一個Activity的時候(或者按HOME鍵的時候)
Fragment1(onPause)---> Fragment1(onStop)
Fragment2(onPause)---> Fragment2(onStop)
d 當在一個透明的Activity中彈出一個Dialog時(與Activity的情況相同)
Fragment1(onPause)
Fragment2(onPause)
e 當宿主Activity被銷毀的時候
Fragment1(onPause)---> Fragment1(onStop)---> Fragment1(onDestroyView onDestroy onDetach)
Fragment2(onPause)---> Fragment2(onStop)---> Fragment2(onDestroyView onDestroy onDetach)
當采用FragmentStatePagerAdapter適配器加載‘Fragment的時候,Fragment的生命周期同上面的情況相同。