Android之fragment生命周期解析

上篇讲到了Fragment的基础应用,现在给大家演示一下Fragment的生命周期是什么样子的。关于Fragemnt的基础应用,请见http://blog.csdn.net/jiapeng2b/article/details/46919859

一、首先,我们先看一下Fragment的生命周期
这里写图片描述
跟Activity生命周期的对比
这里写图片描述

Activity直接影响它所包含的fragment的生命周期,所以对activity的某个生命周期方法的调用也会产生对fragment相同方法的调用。例如:当activity的onPause()方法被调用时,它所包含的所有的fragment们的onPause()方法都会被调用。

Fragment比activity还要多出几个生命周期回调方法,这些额外的方法是为了与activity的交互而设立,如下:

onAttach()

当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。

onCreateView()

当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。

onActivityCreated()

当activity的onCreated()方法返回后调用此方法。

onDestroyView()

当fragment的layout被销毁时被调用。

onDetach()

当fragment被从activity中删掉时被调用。

一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的

二、测试用的代码(这里就简单实现一下,打印出来)

package com.jp.fragment;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.framentdemo.R;


public class Fragmentdemo extends Fragment {
    /**
     * 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
     */
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        System.out.println("Fragment————onAttach()");
    }
    /**
     * 当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。
     */
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        System.out.println("Fragment————()");
        return inflater.inflate(R.layout.title_frament, container, false);

    }
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.out.println("Fragment————onCreate()");
    }

    /**
     * 当activity的onCreated()方法返回后调用此方法。
     */
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        System.out.println("Fragment————onActivityCreated()");
    }
    /**
     * 
     */
    public void onStart() {
        super.onStart();
        System.out.println("Fragment————onStart()");
    }

    /**
     * 
     */
    public void onResume() {
        super.onResume();
        System.out.println("Fragment————onResume()");
    }

    public void onPause() {
        super.onPause();
        System.out.println("Fragment————onPause()");
    }

    public void onStop() {
        super.onStop();
        System.out.println("Fragment————onStop()");
    }

    /**
     * 当fragment的layout被销毁时被调用。
     */
    public void onDestroyView() {
        super.onDestroyView();
        System.out.println("Fragment————onDestroyView()");
    }

    public void onDestroy() {
        super.onDestroy();
        System.out.println("Fragment————onDestroy()");
    }

    /**
     * 当fragment被从activity中删掉时被调用。
     */
    public void onDetach() {
        super.onDetach();
        System.out.println("Fragment————onDetach()");
    }

}

三、场景演示

场景演示 : 切换到该Fragment

这里写图片描述

切换到其他Fragment:

这里写图片描述

切换回本身的Fragment:

这里写图片描述

回到桌面:

这里写图片描述

回到应用:

这里写图片描述

退出应用:

这里写图片描述

就简单介绍到这里,希望对大家有帮助~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章