Android Fragment生命周期解析
来源:互联网 发布:淘宝人气增长 编辑:程序博客网 时间:2024/06/06 02:42
1.Fragment官方介绍
官方API:
https://developer.android.com/reference/android/app/Fragment.html
(1)fragment定义:
A Fragment is a piece of an application’s user interface or behavior that can be placed in an Activity. Interaction with fragments is done through FragmentManager, which can be obtained via Activity.getFragmentManager() and Fragment.getFragmentManager().
Fragment是应用程序的用户界面或行为的一部分,它可以被放在Activity中。fragments的交互是通过FragmentManager,FragmentManager可以通过Activity.getFragmentManager() 和 Fragment.getFragmentManager()方法得到。
(2)Fragment特点:
1.fragment的的典型操作是在一个较大的Activity上运行。Fragment捆绑在一个Activity上,不能单独使用。
2.虽然Fragment定义了自己的生命周期,但是它的生命周期依赖于Activity,如果activity stop了,那么fragment也stop。
3.所有Fragment的子类一定要包括一个没有参数的构造函数。当需要时,框架将重新实例化Fragment类,特别是在状态恢复时,需要找到构造函数进行实例化。如果没有无参数构造函数,当状态恢复时,将产生一个运行异常。
2.Fragment方法和生命周期
(1)onAttach(Activity): 当fragment第一次和Activity绑定时调用;
(2)onCreate(Bundle) :Fragment初始创建时调用;
(3)onCreateView(LayoutInflater, ViewGroup, Bundle) :创建和返回fragment的布局;
(4)onActivityCreated(Bundle) :告诉fragment它的Activity已经完成Activity.onCreate();
(5)onViewStateRestored(Bundle) :告诉Fragment它View层次结构保存的状态已经恢复;
(6)onStart() :使Fragment可见(在Activity可见的基础上);
(7)onResume() :使一个Activity开始与用户交互(在activity是)
resumed);
当一个Fragment不再使用,它将通过一个反向的回调:
(1)onPause():fragment不再与用户交互,因为activity的paused或者在activity中一个fragment操作正在修改;
(2)onStop() :fragment不再对用户可见,因为activity的stop或在activity中一个fragment操作正在修改;
(3)onDestroyView() :允许activity清除它的界面关联资源;
(4)onDestroy() :做最终的清理fragment的状态;
(5)onDetach() :在fragment与activity没有联系之前调用。
fragment生命周期图示:
fragment生命周期对照activity生命周期
1.切换到该Fragment
onAttach–>onCreate–>onCreateView–>onActivityCreated–>onStart–>onResume
2.切换到其他Fragment:
onPause–>onStop–>onDestroyView
3.切换回本身的Fragment:
onCreateView–>onActivityCreated–>onStart–>onResume
4.屏幕灭掉:
onPause–>onSaveInstanceState–>onStop
5.屏幕解锁:
onStart–>onResume
6.回到桌面
onPause–>onSaveInstanceState–>onStop
7.回到应用
onStart–>onResume
8.退出应用
onPause–>onStop–>onDestroyView–>onDestroy–>onDetach
3.Fragment标准布局和使用
(1)一个activity的布局包括标签嵌入Fragment实例,如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment" android:id="@+id/titles" android:layout_width="match_parent" android:layout_height="match_parent" /></FrameLayout>
(2)fragment布局被安装在activity的一般方法:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_layout);}
- Android Fragment生命周期解析
- Android之fragment生命周期解析
- Android Fragment生命周期和用法解析
- Android理解Fragment生命周期,fragment和fragmentactivity解析
- Fragment生命周期及解析
- Fragment生命周期解析
- Fragment生命周期完全解析
- Android开发:5分钟解析Activity&Fragment生命周期
- Android开发:5分钟解析Activity&Fragment生命周期
- Android Fragment---处理Fragment生命周期
- Android Fragment---处理Fragment生命周期
- Android Fragment 生命周期笔记
- Android fragment生命周期处理
- 41 Android fragment 生命周期
- Android-Fragment的生命周期
- Android Fragment 生命周期详解
- Android Fragment 生命周期图
- Android Activity Fragment 生命周期
- 闭包原理--逐步改进加理解
- 内部类
- android解决genymotion模拟器无法下载虚拟机问题
- jquery input失去焦点时触发
- MySQL之权限管理(上)
- Android Fragment生命周期解析
- MySQL批量清除表数据
- Android开发者:你真的会用AsyncTask吗?
- Android笔试总结
- Number of Islands
- Golang环境搭建
- 预递增和后递增
- Mysql之Percona(1)最新版本5.6.10…
- 盘点3款原型工具的部件样式