Fragment 1 切換到 Fragment 2時生命周期變化 1、通過 add hide show 方式來切換 Fragment Fragment1 的生命周期變化為:onCreate()、onCreateView、onStart()、onResume() 回調 onHiddenChanged( ...
Fragment 1 切換到 Fragment 2時生命周期變化
1、通過 add hide show 方式來切換 Fragment
-
Fragment1 的生命周期變化為:onCreate()、onCreateView、onStart()、onResume()
回調 onHiddenChanged() 方法
-
Fragment2 的生命周期變化為: onCreate()、onCreateView、onStart()、onResume()
-
Fragment 2 再次返回到 Fragment 1:不走任何生命周期方法但是回調 onHiddenChanged()方法
總結:當以這種方式進行 Fragment 1 與 Fragment 2 的切換時,Fragment 隱藏的時候並不走 onDestroyView,所有的顯示也不會走 onCreateView 方法,所有的 view 都會保存在記憶體
2、使用 replace 的方法進行切換時
- 載入Fragment 1時:
Fragment 1的生命周期:onCreate()、onCreateView()、onStart()、onResume()
- 切換到Fragment2時:
Fragment 1的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()
Fragment 2的生命周期:onCreate()、onCreateV()、onStart()、onResume()
- Fragment 2切換回Fragment 1時:
Fragment2的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()
Fragment 1的生命周期:onCreate()、onCreateV()、onStart()、onResume()
總結:通過 replace 方法進行替換的時,Fragment 都是進行了銷毀,重建的過程,相當於走了一整套的生命周期
3、使用 ViewPager 進行切換時
當使用 ViewPager 與 Fragment 進行切換時,Fragment 會進行預載入操作
所有的 Fragment 都會提前初始--->預載入;
初始化時 Fragment 們的生命周期:
Fragment 1 的生命周期:onCreate()、onCreateView()
Fragment 2 的生命周期:onCreate()、 onCreateView()
Fragment 1 切換到 Fragment 2 的生命周期:
Fragment 1 :不走任何生命周期;
Fragment 2 :走 setUserVisVleHint()方法
切回去也是一樣的
註意: setUserVisVleHint()方法在 Fragment 1 第一次載入的時候不走,只有在切換的時候 走該方法
具體載入數據的代碼
/** * 判斷是否是初始化Fragment */ private boolean mIsHasStarted = false; /** * 本方法會在ViewPager + Fragment結合時會執行 * 初始化時會執行兩次,一次在 onCreate 之前 isVisibleToUser 為false, * 另一次在 onCreate 之後 isVisibleToUser 為true * @param isVisibleToUser */ @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { setHotUnClick(DELAY_WHEN_APPEAR); mIsHasStarted = true; Logcat.i(TAG, "Start interface 開始界面"); } else { if (mIsHasStarted) { mIsHasStarted = false; Logcat.i(TAG, "End interface 結束界面"); } } }
Activity 切換到 Fragment 的生命周期變化
Fragment 的生命周期變化為:onStart()、onResume()
從 Fragment 1 進行鎖屏操作
Fragment 的生命周期方法:onPause()、onSaveInstanceState()、onStop()。
從解鎖 到 Fragment 1 的生命周期
onStart()、 onResume()
鏈接:https://www.jianshu.com/p/c8f34229b6dc