以前看到别人写那个生命周期,好像都写的不具体,大多数都是粘贴复制。然后自己有详细记录一下,方便以后回顾。
在下面的demo中,我用了2个fragment,
一个是leftFragmentg,一个是rightFragment,一下是主页面布局。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/fragmentlayout"
android:layout_width="match_parent"
android:layout_height="400dp" >
</FrameLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="切换" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/button1"
android:text="跳转" />
</RelativeLayout>
leftFragment 样子
rightFragment样子
主页面布局
启动的时候。我先加载上leftFragmeng
以下是大家经常看到的声明周期:
然后我点击切换:
生命周期如下:
从上面的声明周期,就可以看出,当 activity已经加载上的时候, activity的声明周期将不会做任何处理。而且leftFragment只会执行到将里面的视图销毁。并没有销毁fragment,因为从上面可以看出来leftFragment并没有实现onDestroy,和onDetach,
,然后我跳转到另外一个页面。
此时的生命周期如下:
也就说说当把这个activity压入栈中,只是执行到了onstop方法,然后我点击返回,(注这里不管是点击返回还是finish,都是走这条路),
前面我将rightFragemnt加入回退栈中。此时生命周期如下
从上面可以看出前面的leftFragment并没有进行销毁只是执行到了onDestriyView方法,这里重新返回这个,就是onCreateView方法,之后的声明周期咯,
在这里,我再次点击返回。
。。看到这里,大家应该明白了一下吧,总结一下, 拓展一下,fragment如果放在onstart方面中,也只是在onstart之后执行onattch\\一直到fragment的onstart方法,