程序启动运行并结束上述生命周期的方法执行顺序是这样的:
onCreate –> onContentChanged –> onStart –> onPostCreate –> onResume –> onPostResume –> onPause –> onStop –> onDestroy
onAttach 在Fragment与其Activity关联之后调用
onCreate 该fragmet还没有获得Activity的onCreate()已完成的通知,所以不能将依赖于Activity视图层次结构存在性的代码放入此回调方法中
onCreateView 为Fragment加载布局时调用。
onViewCreated 紧跟OnCreateView之后被调用
onActivityCreated : 当Activity的onCreate()方法执行完之后,调用这个回调方法。
onStart()\onResume()\onPause()\onStop()回调方法将和Activity的回调方法进行绑定,
onStart
onResume
onPause
onStop
onDestroyView Fragment中的布局被移除时调用。
onDestroy 不再使用Fragment时调用,Fragment仍然附加到Activity并可以找到,但是不能执行其他操作
onDetach Fragme 当从Activity中解除Fragment的关联时,调用这个回调方法。
MainActivity: onCreate~~ Fragment1: onAttach Fragment1: onCreate Fragment1: onCreateView Fragment1: onViewCreated Fragment1: onActivityCreated Fragment1: onStart MainActivity: onStart~~~ MainActivity: onResume~~~ Fragment1: onResume
点击切换到另一个FragmentFragment1: onPause Fragment1: onStop Fragment1: onDestroyView Fragment1: onDestroy Fragment1: onDetach Fragment2: onAttach Fragment2: onCreate Fragment2: onCreateView Fragment2: onViewCreated Fragment2: onActivityCreated Fragment2: onStart Fragment2: onResume
关闭ActivityFragment2: onPause MainActivity: onPause~~~ Fragment2: onStop MainActivity: onStop~~~ Fragment2: onDestroyView Fragment2: onDestroy Fragment2: onDetach MainActivity: onDestroy~~~
打开一个ActivityFragment1: onPause MainActivity: onPause~~~ Activity2: onCreate Activity2: onStart~~~ Activity2: onResume~~~ Fragment1: onStop MainActivity: onStop~~~
打开另一个附着Fragment的ActivityFragment1: onPause MainActivity: onPause~~~ Activity2: onCreate Fragment3: onAttach Fragment3: onCreate Fragment3: onCreateView Fragment3: onViewCreated Fragment3: onActivityCreated Fragment3: onStart Activity2: onStart~~~ Activity2: onResume~~~ Fragment3: onResume Fragment1: onStop MainActivity: onStop~~~
回到之前的ActivityFragment3: onPause Activity2: onPause~~~ MainActivity: onRestart~~~ Fragment1: onStart MainActivity: onStart~~~ MainActivity: onResume~~~ Fragment1: onResume Fragment3: onStop Activity2: onStop~~~ Fragment3: onDestroyView Fragment3: onDestroy Fragment3: onDetach Activity2: onDestroy~~~
MainActivity: onCreate Fragment1: onAttach Fragment1: onCreate Fragment1: onCreateView Fragment1: onViewCreated Fragment1: register Fragment1: onActivityCreated Fragment1: onStart MainActivity: onStart~~~ MainActivity: onResume~~~
切换FragmentFragment1: onResume Fragment1: onPause Fragment1: onStop Fragment1: onDestroyView Fragment2: onAttach Fragment2: onCreate Fragment2: onCreateView Fragment2: onViewCreated Fragment2: onActivityCreated Fragment2: onStart Fragment2: onResume
切换回原FragmentFragment2: onResume Fragment2: onPause Fragment2: onStop Fragment2: onDestroyView Fragment1: onCreateView Fragment1: onViewCreated Fragment1: register Fragment1: onActivityCreated Fragment1: onStart Fragment1: onResume
可见:onAttach、onCreate、ondestroy和ondetach没有调用