灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3017回复:0

Android 程式开发:(三)碎片简介 —— 3.2 Fragment的生命周期

楼主#
更多 发布于:2012-09-06 14:04

就像activities一样,fragments也有它们自己的生命周期。理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态。下面的例子测试了fragments的不同状态。    1.创建一个Fragment的子类:Fragment1.java。package net.horsttnann.Fragments;

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;

public class Fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        Log.d("Fragment 1", "onCreateView");

        // ---Inflate the layout for this fragment---
        return inflater.inflate(R.layout.fragment1, container, false);
    }

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

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

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

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

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

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

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

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

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

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d("Fragment 1", "onDetach");
    }
}
    2.按Ctrl+F11,将模拟器转换成“横屏模式”。
    3.按F11调试。


    4.当应用被加载的时候,LogCat窗口中有如下显示。

[plain] view plaincopy03-27 12:23:32.255: D/Fragment 1(704): onAttach
03-27 12:23:32.255: D/Fragment 1(704): onCreate
03-27 12:23:32.255: D/Fragment 1(704): onCreateView
03-27 12:23:32.274: D/Fragment 1(704): onActivityCreated
03-27 12:23:32.274: D/Fragment 1(704): onStart
03-27 12:23:32.286: D/Fragment 1(704): onResume
    5.按Home键,LogCat窗口中有如下显示。[plain] view plaincopy03-27 12:25:23.174: D/Fragment 1(704): onPause
03-27 12:25:25.174: D/Fragment 1(704): onStop
    6.按Home键不放,重新进入应用,LogCat窗口中有如下显示。[plain] view plaincopy03-27 12:26:21.505: D/Fragment 1(704): onStart
03-27 12:26:21.505: D/Fragment 1(704): onResume
    7.按返回键,LogCat窗口中有如下显示。[plain] view plaincopy03-27 12:27:54.384: D/Fragment 1(704): onPause
03-27 12:27:55.324: D/Fragment 1(704): onStop
03-27 12:27:55.324: D/Fragment 1(704): onDestroyView
03-27 12:27:55.324: D/Fragment 1(704): onDestroy
03-27 12:27:55.324: D/Fragment 1(704): onDetach

解析:
    1.当一个fragment被创建的时候,它会经历以下状态.。

onAttach()
onCreate()
onCreateView()
onActivityCreated()
    2.当这个fragment对用户可见的时候,它会经历以下状态。

onStart()
onResume()
    3.当这个fragment进入“后台模式”的时候,它会经历以下状态。

onPause()
onStop()
    4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。

onPause()
onStop()
onDestroyView()
onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出,谢谢。

onDetach()
    5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。

onCreate()
onCreateView()
onActivityCreated()
     6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。


onAttached() —— 当fragment和activity关联之后,调用这个方法。
onCreateView() —— 创建fragment中的视图的时候,调用这个方法。
onActivityCreated() —— 当activity的onCreate()方法被返回之后,调用这个方法。
onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
onDetach() —— 当fragment和activity分离的时候,调用这个方法。




摘自 manoel的专栏

喜欢0 评分0
游客

返回顶部