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);}
1 0
原创粉丝点击