Android fragment 生命周期 详解

时间:2021-07-21 04:42:00

以前看到别人写那个生命周期,好像都写的不具体,大多数都是粘贴复制。然后自己有详细记录一下,方便以后回顾。


在下面的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 样子

Android fragment 生命周期 详解Android fragment 生命周期 详解

rightFragment样子

Android fragment 生命周期 详解Android fragment 生命周期 详解

主页面布局

Android fragment 生命周期 详解Android fragment 生命周期 详解

启动的时候。我先加载上leftFragmeng

以下是大家经常看到的声明周期:

Android fragment 生命周期 详解Android fragment 生命周期 详解

然后我点击切换:

生命周期如下:

Android fragment 生命周期 详解Android fragment 生命周期 详解

从上面的声明周期,就可以看出,当 activity已经加载上的时候, activity的声明周期将不会做任何处理。而且leftFragment只会执行到将里面的视图销毁。并没有销毁fragment,因为从上面可以看出来leftFragment并没有实现onDestroy,和onDetach,

,然后我跳转到另外一个页面。

此时的生命周期如下:

Android fragment 生命周期 详解Android fragment 生命周期 详解

也就说说当把这个activity压入栈中,只是执行到了onstop方法,然后我点击返回,(注这里不管是点击返回还是finish,都是走这条路),

Android fragment 生命周期 详解Android fragment 生命周期 详解


前面我将rightFragemnt加入回退栈中。此时生命周期如下

Android fragment 生命周期 详解Android fragment 生命周期 详解

从上面可以看出前面的leftFragment并没有进行销毁只是执行到了onDestriyView方法,这里重新返回这个,就是onCreateView方法,之后的声明周期咯,

在这里,我再次点击返回。

Android fragment 生命周期 详解Android fragment 生命周期 详解

。。看到这里,大家应该明白了一下吧,总结一下,                             拓展一下,fragment如果放在onstart方面中,也只是在onstart之后执行onattch\\一直到fragment的onstart方法,