Fragment生命周期-3种不同的切换方式生命周期变化

时间:2024-03-20 16:51:39

 一、Fragment生命周期

Fragment生命周期-3种不同的切换方式生命周期变化

二、Fragment1切换到Fragment2生命周期变化

2.1  通过add、hide、show方式来切换fragment

  • FragmFent1的生命周期变化为:onCreate()、onCreateView()、onStart()、onResume(),然后切换时回调onHiddenChanged()方法
  • Fragment2生命周期变化为:onCreate()、onCreateView()、onStart()、onResume()
  • Fragment2再次返回到Fragment1:不走任何生命周期方法,但是回调onHiddenChanged()方法

小结:当以这种方式进行Fragment1和Fragment2切换时,Fragment隐藏的时候并不走onDestroyView(),所有的现实也不会走onCreateView(),所有的view都会保存在内存。

2.2  使用replace()方法进行切换Fragment

  • 载入Fragment1时

Fragment1生命周期为onCreate()、onCreateView()、onStart()、onResume()

  • 切换到Fragment2时

Fragment1的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()

Fragment2的生命周期:onCreate()、onCreateView()、onStart()、onResume()

  • Fragment2切换回Fragment1时

Fragment2的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()

Fragment1的生命周期:onCreate()、onCreateView()、onStart()、onResume()

小结:通过replace方法进行替换的方式,Fragment都是进行了销毁、重建新Fragment的过程,相当于走了一整套的生命周期

2.3  使用ViewPager方式切换Fragment

当使用ViewPager进行Fragment切换时,所有的Fragment都会进行预加载。

  • 预加载时生命周期为:

Fragment1的生命周期:onCreate()、onCreateView()

Fragment2的生命周期:onCreate()、onCreateView()

  • Fragment1切换到Fragment2时生命周期:

Fragment1的生命周期:不走任何生命周期

Fragment2的生命周期:走setUserVisibleHint()方法

  • Fragment2切换回Fragment1时生命周期:

Fragment2的生命周期:不走任何生命周期

Fragment1的生命周期:走setUserVisibleHint()方法

  • Activity切换回Fragment生命周期变化

Fragment生命周期变化:为onStart()、onResume()

  • 从Fragment1进行锁屏操作

Fragment生命周期变化为onPause()、onSaveInstanceState()、onStop()

  • 从解锁到Fragment1生命周期

Fragment1生命周期变化:为onStart()、onResume()