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:

這裏寫圖片描述

回到桌面:

這裏寫圖片描述

回到應用:

這裏寫圖片描述

退出應用:

這裏寫圖片描述

就簡單介紹到這裏,希望對大家有幫助~~

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