offscreenPageLimit = 0 的情況
此種情況表示不會預先加載其他的Fragment,僅僅加載第一個Fragment,其生命周期如下:
Test fragment 0 onAttach
Test fragment 0 onCreate
Test fragment 0 onCreateView
Test fragment 0 OnActivityCreated
Test fragment 0 onStart
Test fragment 0 onResume
切換到其他的Fragment
這倆個Fragment的生命周期如下:
Test fragment 1 onAttach
Test fragment 1 onCreate
Test fragment 1 onCreateView
Test fragment 1 OnActivityCreated
Test fragment 1 onStart
Test fragment 0 onPause
Test fragment 1 onResume
等第二個Fragment執行到onStart后,執行第一個Fragment的onPause函數。
返回到原來的Fragment
前后兩個Fragment的生命周期如下:
Test fragment 1 onPause
Test fragment 0 onResume
先執行當前Fragment的onPause函數,然后執行原來的Fragment的onResume函數。
offscreenPageLimit != 0 的情況
此種情況將會根據offscreenPageLimit的值加載不可見的Fragment,這幾個Fragment的生命周如下:
Test fragment 0 onAttach
Test fragment 0 onCreate
Test fragment 0 onCreateView
Test fragment 0 OnActivityCreated
Test fragment 0 onStart
Test fragment 0 onResume
Test fragment 1 onAttach
Test fragment 1 onCreate
Test fragment 1 onCreateView
Test fragment 1 OnActivityCreated
Test fragment 1 onStart
Test fragment 2 onAttach
Test fragment 2 onCreate
Test fragment 2 onCreateView
Test fragment 2 OnActivityCreated
Test fragment 2 onStart
這幾個Fragment會依次執行其生命周期,但是只有可見的Fragment執行到了onResume函數。
Container Fragment及Child Fragment的生命周期
Child Fragment入棧
入棧調用的是replace()函數。
commitChildFragment操作在Container Fragment的onCreateView函數中執行,這兩個Fragment的生命周期如下:
container fragment onAttach
container fragment onCreate
container fragment onCreateView
container fragment onActivityCreated
Child fragment 0 onAttach
Child fragment 0 onCreate
Child fragment 0 onCreateView
Child fragment 0 OnActivityCreated
container fragment onStart
Child fragment 0 onStart
container fragment onResume
Child fragment 0 onResume
雖然commitChildFragment在onCreateView執行,但是child Fragment真正地開始執行生命周期是在container Fragment的onActivityCreated函數之后。
Child Fragment 再入棧
前后兩個Fragment生命周期如下,Child Fragment 0先入棧,Child Fragment 1后入棧。
Child fragment 1 onAttach
Child fragment 1 onCreate
Child fragment 0 onPause
Child fragment 0 onStop
Child fragment 0 onDestroyView
Child Fragment 1 onCreateView
Child fragment 1 OnActivityCreated
Child fragment 1 onStart
Child fragment 1 onResume
Child Fragment 出棧
Child fragment 1 onPause
Child fragment 1 onStop
Child fragment 1 onDestroyView
Child fragment 1 onDestroy
Child fragment 1 onDetach
Child fragment 0 onCreateView
Child fragment 0 OnActivityCreated
Child fragment 0 onStart
Child fragment 0 onResume
