一、Fragment生命周期
二、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()