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方法,
在下面的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方法,
相关文章推荐
- Android Wi-Fi子系统学习笔记
- android开发学习3
- android成长日记 11.详细学习了数据存储相关基础知识
- Android中加载大图片OOM(图片缩放)
- Qt打印调试信息输出到android logcat中
- Android开发小知识-Notification
- font-awesome android html 字体库怎么引用。
- Android的广播机制
- Android 开发学习2
- Android View 如何绘制
- Android安全攻防战,反编译与混淆技术完全解析(下)
- android: permission和uses-permission
- Android 验证是否为正确手机号
- Android---07---打电话和发短信打电话和发短信更新版
- Android实现开机自启动某个程序
- android 抽取主题样式
- android studio 插件
- Android finishOnTaskLaunch 属性
- AndroidManifest.xml文件详解(activity)(一)
- Android Studio使用ButterKnife插件