**碎片的生命周期**
**[點擊下載源碼](http://download.csdn.net/detail/u012904198/7336969)**
與活動類似,碎片具有自己的生命周期。理解了碎片的生命周期后,我們可以在碎片被銷毀時正確地保存其實例,在碎片被重建時將其還原到前一個狀態。
1、使用上一篇的項目Fragments,在Fragment1.java文件中添加如下代碼:
~~~
package net.zenail.Fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
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) {
// TODO Auto-generated method stub
Log.d("Fragment 1", "onCreateView");
// 實例化布局文件
return inflater.inflate(R.layout.fragment1, container, false);
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
Log.d("Fragment 1", "onAttach");
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d("Fragment 1", "onCreate");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Log.d("Fragment 1", "onActivityCreated");
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d("Fragment 1", "onStart");
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d("Fragment 1", "onResume");
}
@Override
public void onPause() {
super.onPause();
Log.d("Fragment 1", "onPause");
};
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.d("Fragment 1", "onStop");
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
Log.d("Fragment 1", "onDestroyView");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d("Fragment 1", "onDestroy");
}
@Override
public void onDetach() {
// TODO Auto-generated method stub
super.onDetach();
Log.d("Fragment 1", "onDetach");
}
}
~~~
2、按Ctrl+F11,將Android模擬器切換到橫向模式;
3、在Eclipse中按下F11鍵,在模擬器上調試應用程序;
4、當應用程序加載到模擬器中后,LogCat窗口會顯示如下內容:

5、單擊模擬器上的Home按鈕,LogCat窗口中顯示如下輸出:

6、在模擬器上長按Home按鈕,再單擊Fragments以啟動應用程序,LogCat顯示如下:

7、最后,單擊模擬器中Back按鈕,LogCat窗口顯示如下輸出:

8、由上面的實例可知,碎片經歷的過程如下:
碎片被創建時:onAttach()-->onCreate()-->onCreateView()-->onActivityCreated();
碎片進入后臺模式時:onPause()-->onStop();
碎片變為可見時:onStart()-->onResume();
碎片被銷毀時:onPause()-->onStop()-->onDestroyView()-->onDestroy()-->onDetach();
9、與活動一樣,碎片可以使用Bundle對象在以下狀態中還原碎片的實例:
onCreate()、onCreateView()、onActivityCreated()。
- 前言
- Android應用程序剖析
- (一)——生命周期
- (二)——使用Intent傳數據之通用方式
- (三)——使用靜態變量傳遞數據
- (四)——通過剪切板傳遞數據
- (五)——通過全局變量傳遞數據
- (六)——從Activity返回數據
- adt-bundle-linux-x86_64-20131030下新建工程提示找不到adb和R.java問題的解決
- Eclipse啟動時提示fail to create the Java Virtual Machine問題的解決
- Android常見UI組件之ListView(一)
- Android常見UI組件之ListView(二)——定制ListView
- (七)——顯示對話框窗口
- (八)——顯示進度對話框
- (九)——更復雜的進度對話框
- (十)——使用意圖鏈接活動
- (十一)——從意圖返回結果
- (十二)——使用意圖傳遞數據的幾種方式
- (十三)——碎片(一)
- (十四)——在運行時添加碎片(附源碼)
- (十五)——碎片的生命周期(附源碼)
- (十六)——碎片之間進行交互(附源碼)
- (十七)——使用意圖調用內置應用程序
- (十八)——使用意圖篩選器和實現瀏覽網頁(附源碼)