Android之Fragment的生命周期

一、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: 
发布了34 篇原创文章 · 获赞 5 · 访问量 7482

猜你喜欢

转载自blog.csdn.net/qq_39438055/article/details/104145673
今日推荐