activity和fragment生命周期

以下內容整理自互聯網,僅用于個人學習


  • 完整生存期:onCreate()方法和onDestroy()方法之間。
  • 可見生存期:onStart()方法和onStop()方法之間。
  • 前臺生存期:onResume()方法和onPause()方法之間。
Activity和Fragment生命周期對比.png

Activity

activity生命周期.png

Fragment

1. 為什么需要Fragment

為了更好的利用大屏幕的空間,同時適配手機和平板、UI和邏輯的共享,在平板中廣泛使用。

2. Fragment生命周期

fragment生命周期.png

3. Fragment比Activity多了幾個額外的生命周期回調方法:

  • onAttach(Activity):當Fragment和Activity發生關聯時使用
  • onCreateView(LayoutInflater, ViewGroup, Bundle):創建該Fragment的視圖
  • onActivityCreate(Bundle):當Activity的onCreate方法返回時調用
  • onDestoryView():與onCreateView相對應,當該Fragment的視圖被移除時調用
  • onDetach():與onAttach相對應,當Fragment與Activity關聯被取消時調用

4. 動態添加fragment的步驟

  1. 創建待添加的fragment實例。
  2. 獲取FragmentManager,在activity中可以直接調用getFragmentManager()方法得到。
  3. 通過beginTransaction()方法開啟一個事務。
  4. 向容器中添加fragment,一般使用replace()方法實現。
  5. 調用commit()方法提交事務。
AnotherFragment fragment = new AnotherFragment();
FragmentManager fm = getFragmentManager(); 
fm.beginTransaction() 
    .replace(R.id.fragmentContainer, fragment) 
    .commit();

5. Fragment與Activity之間的交互

Fragment與Activity之間的交互可以通過Fragment.setArguments(Bundle args)以及Fragment.getArguments()來實現。

6. Fragment狀態的持久化

  • 可以通過protected void onSaveInstanceState(Bundle outState)
    ,protected void onRestoreInstanceState(Bundle savedInstanceState)
    狀態保存和恢復的方法將狀態持久化。
  • 讓Android自動幫我們保存
  1. FragmentManager.putFragment(Bundle bundle, String key, Fragment fragment)是在Activity中保存Fragment的方法。
  1. FragmentManager.getFragment(Bundle bundle, String key)是在Activity中獲取所保存的Frament的方法。

很顯然,key就傳入Fragment的id,fragment就是你要保存狀態的fragment,但,我們注意到上面的兩個方法,第一個參數都是Bundle,這就意味著FragmentManager是通過Bundle去保存Fragment的。但是,這個方法僅僅能夠保存Fragment中的控件狀態,比如說EditText中用戶已經輸入的文字(注意!在這里,控件需要設置一個id,否則Android將不會為我們保存控件的狀態),而Fragment中需要持久化的變量依然會丟失,但依然有解決辦法,就是利用方法一!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容