Android連載9-碎片的生命週期

1、碎片的狀態和android

1.運行狀態git

當一個碎片是可見的,而且她所關聯的活動正處於運行狀態,該碎片就是運行​狀態。github

2.暫停狀態微信

當一個活動那個進入暫停狀態(因爲另外一個未佔滿屏幕的活動被添加到棧頂),與它相關聯的​可見碎片進入到暫停狀態。app

3.中止狀態ide

當一個活動進入到中止狀態的時候,與它相關聯的碎片就會進入到中止狀態。或者經過調用FragmentTransaction的remove()、replace()方法將碎片從活動中移除,但有在事務提交以前調用addToBackStack()方法,這時的碎片也就會進入到中止狀態。總的來講,進入到中止狀態的碎片對於用戶來講是徹底不可見的,有可能會被​系統回收。佈局

4.銷燬狀態學習

碎片老是依附於活動而存在的,所以當活動被銷燬的時候,與它相關聯的碎片就會進入到銷燬狀態​。或者經過調用FragmentTransaction的remove()、replace()方法將碎片從活動中移除,但有在事務提交以前並無調用addToBackStack()方法,這時的碎片也就會進入到中止狀態。大數據

2、額外的回調方法ui

1.toAttach()

當活動與碎片創建關聯的時候進行調用

2.onCreateView()

爲碎片建立視圖(加載佈局)時調用

3.onActivityCreated()

確保與碎片相關的試圖被移除的時候進行調用

4.onDestroyView()

當與碎片關聯的視圖被移除的時候進行調用​。

5.onDetach()

當碎片與活動解除關聯的時候調用

碎片的完整生命週期圖例

 

package com.example.fragmenttest;

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 RightFragment extends Fragment {

  public static final String TAG = "RightFragment";

 

  @Override

  public void onAttach(Activity activity) {

    super.onAttach(activity);

    Log.d(TAG,"onAttach");

  }

 

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Log.d(TAG,"onCreate");

  }

 

  @Override

  public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

    Log.d(TAG,"onCreateView");

    View view = inflater.inflate(R.layout.right_fragment,container,false);

    return view;

   

  }

 

  @Override

  public void onActivityCreated(Bundle savedInstanceState) {

    super.onActivityCreated(savedInstanceState);

    Log.d(TAG,"onActivity");

  }

 

  @Override

  public void onStart() {

    super.onStart();

    Log.d(TAG,"onStart");

   

  }

 

  @Override

  public void onResume() {

    super.onResume();

    Log.d(TAG,"onResume");

  }

 

  @Override

  public void onPause() {

    super.onPause();

    Log.d(TAG,"onPause");

   

  }

 

  @Override

  public void onStop() {

    super.onStop();

    Log.d(TAG,"onStop");

  }

 

  @Override

  public void onDestroy() {

    super.onDestroy();

    Log.d(TAG,"onDestroy");

​

  }

 

  @Override

  public void onDetach() {

    super.onDetach();

    Log.d(TAG,"onDetach");

  }

 

}

 

3、源碼:

1.項目地址

https://github.com/ruigege66/Android/tree/master/FragmentTest​

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索