Fragment生命周期可以参考http://blog.csdn.net/forever_crying/article/details/8238863/
我自己动手试了一下,通过打印Log日志的方式。
MainActivity类底部有4个Tab,分别对应4个Fragment分别是HomeFragment,SecondFragment,ThirdFragment和MeFragment,点击可以切换Fragment。对每一个页面打印Log日志记录。
启动MainActivity,生命周期如下:
MainActivity -- onCreate
HomeFragment -- onAttach(Activity activity)
HomeFragment -- onCreate
HomeFragment -- onCreateView
HomeFragment -- onViewCreated
HomeFragment -- onActivityCreated
MainActivity -- onStart
HomeFragment -- onStart
MainActivity -- onResume
HomeFragment -- onResume
由HomeFragment切换到第SecondFragment,生命周期如下:上一个页面onHiddenChanged
HomeFragment -- onHiddenChanged
SecondFragment -- onAttach(Activity activity)
SecondFragment -- onCreate
SecondFragment -- onCreateView
SecondFragment -- onViewCreated
SecondFragment -- onActivityCreated
SecondFragment -- onStart
SecondFragment -- onResume
接下来由SecondFragment切换到ThirdFragment,由ThirdFragment切换至MeFragment的生命周期与上面的一样。
最后在MeFragment页面打开另一个SettingActivity页面,已经创建的Fragment和Activity调用onPause方法和onStop方法。
HomeFragment -- onPause
SecondFragment -- onPause
ThirdFragment -- onPause
MeFragment -- onPause
MainActivity -- onPause
HomeFragment -- onStop
SecondFragment -- onStop
ThirdFragment -- onStop
MeFragment -- onStop
MainActivity -- onStop
SettingActivity点击返回回到之前选中的MeFragment页面,调用Activity和Fragment的onStart方法和onResume方法,生命周期如下:
MainActivity -- onStart
HomeFragment -- onStart
SecondFragment -- onStart
ThirdFragment -- onStart
MeFragment -- onStart
MainActivity -- onResume
HomeFragment -- onResume
SecondFragment -- onResume
ThirdFragment -- onResume
MeFragment -- onResume
Fragment之间的切换,如果Fragment已经创建并启动,则分别调用两个Fragment的onHiddenChanged方法。比如由MeFragment切换到HomeFragment,生命周期调用如下:
MeFragment -- onHiddenChanged
HomeFragment -- onHiddenChanged
最后点击返回,退出MainActivity,生命周期如下:
HomeFragment -- onPause
SecondFragment -- onPause
ThirdFragment -- onPause
MeFragment -- onPause
MainActivity -- onPause
HomeFragment -- onStop
SecondFragment -- onStop
ThirdFragment -- onStop
MeFragment -- onStop
MainActivity -- onStop
HomeFragment -- onDestroyView
HomeFragment -- onDestroy
HomeFragment -- onDetach
SecondFragment -- onDestroyView
SecondFragment -- onDestroy
SecondFragment -- onDetach
ThirdFragment -- onDestroyView
ThirdFragment -- onDestroy
ThirdFragment -- onDetach
MeFragment -- onDestroyView
MeFragment -- onDestroy
MeFragment -- onDetach
MainActivity -- onDestroy