1. 程式人生 > >Fragment 1 切換到 Fragment 2時生命週期變化

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 第一次載入的時候不走,只有在切換的時候 走該方法

Activity 切換到 Fragment 的生命週期變化

Fragment 的生命週期變化為:onStart()、onResume()

從 Fragment 1 進行鎖屏操作

Fragment 的生命週期方法:onPause()、onSaveInstanceState()、onStop()。

從解鎖 到 Fragment 1 的生命週期

onStart()、 onResume()