一、碎片的狀態和 1.運行狀態 當一個碎片是可見的,並且她所關聯的活動正處於運行狀態,該碎片就是運行狀態。 2.暫停狀態 當一個活動那個進入暫停狀態(由於另一個未占滿屏幕的活動被添加到棧頂),與它相關聯的可見碎片進入到暫停狀態。 3.停止狀態 當一個活動進入到停止狀態的時候,與它相關聯的碎片就會 ...
一、碎片的狀態和
1.運行狀態
當一個碎片是可見的,並且她所關聯的活動正處於運行狀態,該碎片就是運行狀態。
2.暫停狀態
當一個活動那個進入暫停狀態(由於另一個未占滿屏幕的活動被添加到棧頂),與它相關聯的可見碎片進入到暫停狀態。
3.停止狀態
當一個活動進入到停止狀態的時候,與它相關聯的碎片就會進入到停止狀態。或者通過調用FragmentTransaction的remove()、replace()方法將碎片從活動中移除,但有在事務提交之前調用addToBackStack()方法,這時的碎片也就會進入到停止狀態。總的來說,進入到停止狀態的碎片對於用戶來說是完全不可見的,有可能會被系統回收。
4.銷毀狀態
碎片總是依附於活動而存在的,因此當活動被銷毀的時候,與它相關聯的碎片就會進入到銷毀狀態。或者通過調用FragmentTransaction的remove()、replace()方法將碎片從活動中移除,但有在事務提交之前並沒有調用addToBackStack()方法,這時的碎片也就會進入到停止狀態。
二、額外的回調方法
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"); } }
三、源碼:
1.項目地址
https://github.com/ruigege66/Android/tree/master/FragmentTest
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料