Fragment生命周期(转)

    Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化. 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化。
例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件. 因此, 取代使用一个activity来选择一篇文章,而另一个activity来阅读文章 的方式,用户可以在相同的activity中选择一篇文章并且阅读, 如图所示:





1

  和Activity一样,Fragment也有自己的生命周期。 一个Fragment必须总是嵌入在一个Activity中,同时Fragment的生命周期受Activity而影响。


Activity的生命周期

Fragment生命周期

Activity的生命周期影响Fragment的生命周期

下面通过程序来观察Fragment的生命周期

第一步:新建一个Android工程命名为FragmentLifecycle目录结构如下图:

第二步:修改activity_main.xml布局文件代码如下:





 1
2
3
4
5
6
7
8
9
10
11
12
13

<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" >

<fragment
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="cn.eoe.leigo.lifecycle.MyFragment" />

</RelativeLayout>


第三步:编写MainActivity类:





 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

package cn.eoe.leigo.lifecycle;

import cn.eoe.leigo.fragment.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
private static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "-----Activity onCreate-----");
}

@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "-----Activity onStart-----");
}

@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "-----Activity onRestart-----");
}

@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "-----Activity onResume-----");
}

@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "-----Activity onPause-----");
}

@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "-----Activity onStop-----");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "-----Activity onDestroy-----");
}
}


第四步:编写MyFragment类:





 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

package cn.eoe.leigo.lifecycle;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFragment extends Fragment {
private static final String TAG = "MyFragment";

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d(TAG, "----------Fragment onAttach----------");
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "----------Fragment onCreate----------");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "----------Fragment onCreateView----------");
TextView textView = new TextView(getActivity());
textView.setText("欢迎来到石头的博客");
return textView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "----------Fragment onActivityCreated----------");
}

@Override
public void onStart() {
super.onStart();
Log.d(TAG, "----------Fragment onStart----------");
}

@Override
public void onResume() {
super.onResume();
Log.d(TAG, "----------Fragment onResume----------");
}

@Override
public void onPause() {
super.onPause();
Log.d(TAG, "----------Fragment onPause----------");
}

@Override
public void onStop() {
super.onStop();
Log.d(TAG, "----------Fragment onStop----------");
}

@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "----------Fragment onDestroyView----------");
}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "----------Fragment onDestroy----------");
}

@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "----------Fragment onDetach----------");
}

}


通过查看Log可以看到
显示到前台时:

MyFragment onAttach() fragment关联到activity上
MyFragment onCreate()
fragment创建
MyFragment onCreateView() fragment创建自己的视图

MainActivity onCreate()
MyFragment onActivityCreated()
可以处理fragment数据的初始化

MainActivity onStart()
MyFragment onStart()

MainActivity onResume()
MyFragment onResume()

按后退键时:


MyFragment onPause()
MainActivity onPause()

MyFragment onStop()
MainActivity onStop()

MyFragment onDestoryView() 销毁掉自己的视图
MyFragment onDestory()

MyFragment onDetach() 解除和activity的关联

MainActivity onDetory()

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: gaolei_xj

原文地址: http://my.eoe.cn/657912/archive/2808.html

Fragment生命周期(转),码迷,mamicode.com

时间: 2024-10-12 16:47:15

Fragment生命周期(转)的相关文章

打入电话时Fragment生命周期

Activity初次加载: MainActivity--->onCreate Mfragment---->onAttach Mfragment---->onCreate Mfragment---->onCreateView Mfragment---->onActivityCreated MainActivity--->onStart Mfragment---->onStart MainActivity--->onResume Mfragment---->

fragment生命周期及优点

fragment生命周期切换到该FragmentonAttach—> onCreate-> onCreateView—> onActivityCreated-> onStart-> onResume切换到其他Fragment:onPause-> onStop-> onDestroyView切换回本身的Fragment:onCreateView-> onActivityCreated-> onStart-> onResume显示Fragment时(

Fragment生命周期及其使用

Fragment是随着Android 3.0推出时携带的一部分,若是在1.6版本中使用,必须引入相应的支持包.Fragment最大的优点是你可以根据不同设备的屏幕大小创建动态的UI.Fragment有以下几个特点. 每个Fragment是个独立的模块 与其所在的Activity紧密的联系在一起 多个Activity可以共用一个Activity 1.Fragment生命周期. 首先来看下Fragment的生命周期,Fragment的生命周期和他所在的Activity的生命周期紧密联系在一起.因此看

关于fragment生命周期的两张图片

图1,fragment的生命周期,图2,fragment生命周期对应activity的生命周期

Activity生命周期和Fragment生命周期

工作时间不短了,却没怎么总结过.一直想对android的学习做个记录,那从这儿起吧.从最基础的知识一点点开始.很多内容是从大神那里搜罗来的. 一.Fragment生命周期图 二.Activity与Fragment生命周期比较

Android Activity生命周期以及Fragment生命周期的区别与分析

Android Fragment生命周期图: Activity生命周期图: 对照图: Fragment生命周期分析: 1. 当一个fragment被创建的时候,它会经历以下状态. onAttach() onCreate() onCreateView() onActivityCreated() 2. 当这个fragment对用户可见的时候,它会经历以下状态. onStart() onResume() 3. 当这个fragment进入“后台模式”的时候,它会经历以下状态. onPause() onS

Fragment生命周期-基于实验的最新总结

现在很多应用的开发都是基于FragmentActivity中嵌套Fragment进行开发的,所以,如果我们能够清晰地知道他们的生命周期,那么会使我们的开发变的容易. 对于Activity的生命周期,我在之前的文章 Activity生命周期-基于实验的最新总结  中已经说的很详细了,因此本篇文章只是从实践角度来讲一下Fragment的生命周期以及Fragment与Activity生命周期的对应关系,像大多数介绍Fragment生命周期的文章一样,先上两张图: 好,言归正传 这里从实例的角度来说明一

三张图让你快速明白activity与fragment生命周期的异同点

第一张图:activity的生命周期 第二张图:fragment的生命周期 第三张图:activity与fragment生命周期对比 补充:如果你还是不明白,请翻译一下你不理解的对应单词. ---------------------------------------------------------------------------------------- 有什么问题,大家可以一起交流-- 更多精彩关于关注博主的微信订阅号:非常周末 微信搜索:非常周末 你可以扫描一下关注即可:

Fragment(四)Fragment生命周期分析(转)

Fragment(四)Fragment生命周期分析 转载请注明:http://blog.csdn.net/liaoqianchuan00/article/details/24271607   例子一 从Layout中加载Fragment:   假设我们有一个Activity的Layout中有两个Fragment: <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=