標籤:
Fragment與Activity的生命週期關係:
剛開啟Activity:
Fragment onAttach > Fragment onCreate > Fragment onCreateView
> Activity onCreate > Fragment onActivityCreated
> Activity onStart > Fragment onStart >
Activity onResume > Fragment onResume
關閉Activity:
Fragment onPause > Activity onPause
> Fragment onStop > Activity onStop
> Fragment onDestroyView > Fragment onDestroy > Fragment onDetach > Activity onDestroy
進入下一個Activity:
Fragment onPause > Activity onPause
> Fragment onStop > Activity onStop
返回到當前Activity:
Activity onRestart > Activity onStart > Fragment onStart
> Activity onResume > Fragment onResume
添加Fragment:
onCreate > onCreateView > onActivityCreated > onStart > onResume
Fragment添加後是否加入返回棧,生命週期都一樣,pop即完全移除到onDetach
移除Fragment(未添加到返回棧):
onPause > onStop > onDestroyView > onDestroy > onDetach
移除Fragment(添加到返回棧):
onPause > onStop > onDestroyView
使用popBackStack恢複移除的Fragment:
onCreateView > onActivityCreated > onStart > onResume
寫在xml中的靜態Fragment,移除後雖然變成null,但視覺上並不會消失;只有在代碼中動態添加的Fragment,移除後才會真正消失
FragmentTransaction調用addToBackStack(null)可以在commit之前任何時候,包括在實施增刪改Fragment之前調用,之後popBackStack的效果都是一樣的
Android Fragment生命週期