fragment的生命周期及其各个周期方法的作用

先上生命周期图:

Fragment的生命周期图:

      

与Activity的生命周期对比图:

由于Fragment是嵌在Activity中使用的,故其生命周期也是依赖于Activity的周期的,或者说Fragment的生命周期小于Activity的生命周期。

从上图的生命周期中也可以看出Fragment主要运行在Activity的onResume()与onPause()之间。一旦activity进入resumed状态(也就是running状态),就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。

下面来看看每一个生命周期的作用:

 1 import android.app.Activity;
 2 import android.app.Fragment;
 3 import android.os.Bundle;
 4 import android.util.Log;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8 
 9 
10 public class MyFragment2 extends Fragment{
11 
12     @Override //fragment和activity建立关联时调用
13     public void onAttach(Activity activity) {
14         super.onAttach(activity);
15     }
16     
17     //当创建 fragment 时系统调用此方法。在其中初始化 fragment 的基础组件。可参考 activity 的说明。
18     @Override
19     public void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21     }
22     
23     
24     @Override 
25     //当fragment加载布局文件时调用。 即fragment要画自己的界面时调用(在真正显示之前)此方法。
26     //这个方法返回 frament 的 layout 的根控件。如果这个 fragment 不提供界面,那它应返回 null。
27     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
28         View view=inflater.inflate(R.layout.fragface2,container,false);
29         return view;
30     }
31     
32     @Override //当activity的oncreate执行后调用
33     public void onActivityCreated(Bundle savedInstanceState) {
34         super.onActivityCreated(savedInstanceState);
35     }
36 
37     @Override//与Activity的一样,此时可以看到Fragment的界面,但还不能交互
38     public void onStart() {
39         super.onStart();
40     }
41 
42     @Override//与用户交互
43         public void onResume() {
44             super.onResume();
45         }
46 
47     @Override//可见不可交互
48     public void onPause() {
49         super.onPause();
50     }
51     
52     @Override//不可见,fragment进入后台模式
53     public void onStop() {
54         super.onPause();
55     }
56     
57     @Override// 当fragment中的视图被移除的时候,调用这个方法。
58     public void onDestroyView() {
59         super.onDestroyView();
60     }
61         
62     @Override//Fragment被销毁的时候
63     public void onDestroy() {
64         super.onDestroy();
65 
66     }
67 
68     @Override //解除与Activity关联时调用
69     public void onDetach() {
70         super.onDetach();
71     }
72 
73     @Override
74     public void onStop() {
75         
76         Log.e("robin debug", "fragment onStop...2");
77         super.onStop();
78     }
79     
80 }

fragment的基本使用步骤详看 http://www.cnblogs.com/huaqing-wkc/p/4926288.html

原文地址:https://www.cnblogs.com/huaqing-wkc/p/4929599.html