一、Fragment的生命周期
二、Activity与Fragment的对比
三、回调方法
onAttach
当碎片和活动建立关联的时候调用
onCreateView
为碎片创建视图(加载布局)时调用
onActivityCreated
确保与碎片相关联的活动一定依据创建完毕的时候调用
onDestroyView
当与碎片关联的视图被移除的时候调用
onDetach
当碎片和活动解除关联的时候调用
四、首次打开界面
启动时一般都是先执行Activity的生命周期,再执行Fragment的。
除了Fragment的onStart()先于Activity的onStart()先执行这一个特例。
正常启动时每个Fragment的onAttach->onActivityCreated这四个生命周期一般都是一组一起执行的,在执行完这一组方法前不会去执行其它Fragment的生命周期方法
02-02 17:15:06.587 5232-5232/com.example.fragmenttest D/MainActivity: onCreate:
02-02 17:15:06.594 5232-5232/com.example.fragmenttest D/RightFragment: onAttach:
02-02 17:15:06.594 5232-5232/com.example.fragmenttest D/RightFragment: onCreate:
02-02 17:15:06.594 5232-5232/com.example.fragmenttest D/RightFragment: onCreateView:
02-02 17:15:06.595 5232-5232/com.example.fragmenttest D/RightFragment: onActivityCreated:
02-02 17:15:06.595 5232-5232/com.example.fragmenttest D/RightFragment: onStart:
02-02 17:15:06.596 5232-5232/com.example.fragmenttest D/MainActivity: onStart:
02-02 17:15:06.596 5232-5232/com.example.fragmenttest D/MainActivity: onResume:
02-02 17:15:06.597 5232-5232/com.example.fragmenttest D/RightFragment: onResume:
五、Home键回到主界面时又返回时
回到主页面
02-02 17:18:26.232 5232-5232/com.example.fragmenttest D/RightFragment: onPause:
02-02 17:18:26.232 5232-5232/com.example.fragmenttest D/MainActivity: onPause:
02-02 17:18:27.019 5232-5232/com.example.fragmenttest D/RightFragment: onStop:
02-02 17:18:27.019 5232-5232/com.example.fragmenttest D/MainActivity: onStop:
返回
02-02 17:23:20.161 5576-5576/com.example.fragmenttest D/MainActivity: onRestart:
02-02 17:23:20.172 5576-5576/com.example.fragmenttest D/RightFragment: onStart:
02-02 17:23:20.172 5576-5576/com.example.fragmenttest D/MainActivity: onStart:
02-02 17:23:20.173 5576-5576/com.example.fragmenttest D/MainActivity: onResume:
02-02 17:23:20.173 5576-5576/com.example.fragmenttest D/RightFragment: onResume:
六、碎片B替换了碎片A
1、使用replace加载fragment,增加addToBackStack(),原来Fragment不会销毁,但是会销毁视图和重新创建视图(回调onDestroyView和onCreateView)
①启动AnotherRightFragment
02-02 17:37:52.009 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onAttach:
02-02 17:37:52.009 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onCreate:
02-02 17:37:52.019 5839-5839/com.example.fragmenttest D/RightFragment: onPause:
02-02 17:37:52.019 5839-5839/com.example.fragmenttest D/RightFragment: onStop:
02-02 17:37:52.019 5839-5839/com.example.fragmenttest D/RightFragment: onDestroyView:
02-02 17:37:52.021 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onCreateView:
02-02 17:37:52.032 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onActivityCreated:
02-02 17:37:52.032 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onStart:
02-02 17:37:52.032 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onResume:
②按Back键返回
2-02 17:39:32.940 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onPause:
02-02 17:39:32.940 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onStop:
02-02 17:39:32.940 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onDestroyView:
02-02 17:39:32.947 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onDestroy:
02-02 17:39:32.947 5839-5839/com.example.fragmenttest D/AnotherRightFragment: onDetach:
02-02 17:39:32.947 5839-5839/com.example.fragmenttest D/RightFragment: onCreateView:
02-02 17:39:32.948 5839-5839/com.example.fragmenttest D/RightFragment: onActivityCreated:
02-02 17:39:32.948 5839-5839/com.example.fragmenttest D/RightFragment: onStart:
02-02 17:39:32.949 5839-5839/com.example.fragmenttest D/RightFragment: onResume:
2、使用replace加载fragment,不增加addToBackStack,fragment会销毁(回调onDestroy)
02-02 17:42:06.458 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onAttach:
02-02 17:42:06.459 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onCreate:
02-02 17:42:06.459 6025-6025/com.example.fragmenttest D/RightFragment: onPause:
02-02 17:42:06.459 6025-6025/com.example.fragmenttest D/RightFragment: onStop:
02-02 17:42:06.460 6025-6025/com.example.fragmenttest D/RightFragment: onDestroyView:
02-02 17:42:06.464 6025-6025/com.example.fragmenttest D/RightFragment: onDestroy:
02-02 17:42:06.464 6025-6025/com.example.fragmenttest D/RightFragment: onDetach:
02-02 17:42:06.464 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onCreateView:
02-02 17:42:06.465 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onActivityCreated:
02-02 17:42:06.465 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onStart:
02-02 17:42:06.465 6025-6025/com.example.fragmenttest D/AnotherRightFragment: onResume: