您的位置:首页 > 移动开发 > Android开发

Android fragment 生命周期 详解

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

在下面的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方法,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: