Android Studio 單刷《第一行代碼》系列 06 —— Fragment 生命周期


前情提要(Previously)

本系列將使用 Android Studio 將《第一行代碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。
PS:其實我就是現學現賣,希望我能堅持刷完。

在前面剛學習了Fragment,這次來了解一下她的生命周期。

系列目錄在此:

Fragment 的生命周期

先來看一下 Fragment 的生命周期圖解吧。

fragment_lifecycle

與 Activity 的 關系

Fragment 必須是依存於 Activity 而存在的,因此 Activity 的生命周期會直接影響到 Fragment 的生命周期。Android 官網這張圖很好的說明了兩者生命周期的關系,如下

activity_fragment_lifecycle

跟 Activity 比較,多了下面幾個回調函數:

  1. onAttach(),當 Fragment 和 Activity 建立關聯時調用。
  2. onCreateView(),當為 Fragment 創建視圖時調用。
  3. onActivityCreated(),與 Fragment 關聯的 Activity 已經創建完畢時調用。
  4. onDEstroyView(),當與 Fragment 關聯的視圖被移除時調用。
  5. onDetach(),當 Fragment 和 Activity 接觸關聯是調用。

體驗 Fragment 的生命周期

打開上一篇 Android Studio 單刷《第一行代碼》系列 05 —— Fragment 基礎 中的 FragmentTest 項目,修改 RightFragment 中的代碼,重寫每一個回調方法在里面加上輸出日志,代碼如下:

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, "onActivityCreated");
  }

  @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 onDestroyView() {
      super.onDestroyView();
      Log.d(TAG, "onDestroyView");
  }

  @Override
  public void onDestroy() {
      super.onDestroy();
      Log.d(TAG, "onDestroy");
  }

  @Override
  public void onDetach() {
      super.onDetach();
      Log.d(TAG, "onDetach");
  }

}

  • 運行,RightFragment 第一次加載,查看 Logcat 中的日志,如下圖

log1

  • 點擊 LeftFragment 中的 Button,AnotherRightFragment 替換 RightFragment 出現,查看日志,如下圖

log2

  • 按 Back 鍵,RightFragment 出現,查看日志,如下圖

log3

  • 再按 Back 鍵,程序退出,查看日志,如下圖

log4

OK 了,我們對 Fragment 的生命周期已經了解的差不多,更深刻的理解以后用到的時候再說了。

其它(Miscellaneous)

盡管我試圖在本文中盡量完整的進行描述,但受限於篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!

關於作者(About Me)

addict

本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM