学会了用Fragment创建小栗子后,来学习一下Fragment的生命周期。
主要的三个:onCreate()、onCreateView()、onPause()
首先:onCreateView()是用来创建一个布局的生命周期函数。
以上一篇为例,AnotherFragment中重写onCreate()、onCreateView()、onPause()
在其中添加输出语句
1、点击“呈现另一个Fragment”按钮后,
控制台输出:
onCreate
onCreateView
先执行创建,再执行创建界面
2、点后退键
控制台输出:
onPause
会停止。
但是其生命周期函数还会继续执行onDestory()、onDetach()最后这个Fragment会完全destroy
重写onDestroy,添加一个输出语句。执行上面的1.2.步骤。
控制台输出:
onCreate
onCreateView
onPause
onDestroy
会发现,执行了onDestroy,至此,这个fragment会完全销毁掉。
那么:
如果有第二个fragment把第一个fragment完全覆盖掉的话,第一个fragment会不会执行onDestroy呢?
在PlaceholderFragment中重写onPause()、onDestory(),并输出“a onPause” "a onDestory" 执行上面的1。2步骤
控制台输出:
a onPause
onCreate
onCreateView
点击后退,控制台输出:
onPause
onDestroy
a只执行了a onPause,自始至终都没有执行a onDestory ,再重写a的onDestroyView,再次执行,
控制台输出:
a onPause
a onDestroyView
onCreate
onCreateView
点击后退,控制台输出:
onPause
onDestroy
意味着:a被替换掉之后,a的view已经被释放掉了,只有在回来之后,才会呈现到之前的那个view,会把这个view重新创建。
如果后退到桌面
控制台输出:
a onPause
a onDestroyView
a onDestroy