Activity和Fragment的生命周期和使用注意
2018-03-28 21:08
267 查看
Activity和Fragment是安卓开发中用的最多的两个组件,所以我们需要对它们的生命周期有一个很清晰的认识。目前很多工作好多年的开发对一些细节不是很清楚,经常会导致一些bug的产生,在下面我会对生命周期做一些详细的介绍和一些开发中的常见注意事项。
从上面这张图我们可以知道Fragment的生命周期遵循着Activity,Activity的生命周期先执行然后再执行Fragment。如果同一个activity内有多个Fragment,生命周期调用的顺序是添加Fragment的顺序。在上面的生命周期中,可能有人发现了还少一个onRestart(),在Activity中当页面重新回到前台的时候会调用一次onRestart方法,但是这个方法Fragment并没有。
以下一些注意事项
生命周期中不要处理一些耗时操作
A activity 跳转B activity时 A的onPause会先调用,然后onResum才会调用,可以简单的记为不可能有两个页面同时处于前台
当页面被意外销毁时,页面中的View会将自己的数据和状态缓存起来,等重绘的时候从缓存中取出填充
Fragemnt的生命周期一定是与之attatch的activity状态一致
fragment被replace之后相当于是被销毁。如果需要保留的话使用hide和show的组合来显示fragment.
注意注意注意,重要的事情说三遍,在调用commit的时候要判断activity的状态,不要轻易使用commitAllowStateLost这个方法。
下面用一张图简要的介绍下各生命周期:
从上面这张图我们可以知道Fragment的生命周期遵循着Activity,Activity的生命周期先执行然后再执行Fragment。如果同一个activity内有多个Fragment,生命周期调用的顺序是添加Fragment的顺序。在上面的生命周期中,可能有人发现了还少一个onRestart(),在Activity中当页面重新回到前台的时候会调用一次onRestart方法,但是这个方法Fragment并没有。
以下一些注意事项
生命周期中不要处理一些耗时操作
A activity 跳转B activity时 A的onPause会先调用,然后onResum才会调用,可以简单的记为不可能有两个页面同时处于前台
当页面被意外销毁时,页面中的View会将自己的数据和状态缓存起来,等重绘的时候从缓存中取出填充
Fragemnt的生命周期一定是与之attatch的activity状态一致
fragment被replace之后相当于是被销毁。如果需要保留的话使用hide和show的组合来显示fragment.
注意注意注意,重要的事情说三遍,在调用commit的时候要判断activity的状态,不要轻易使用commitAllowStateLost这个方法。
相关文章推荐
- android: Fragment:注意fragment 与activity之间的生命周期
- Fragment生命周期,使用注意事项
- Fragment与Activity简单使用,包括二者之间的关联与生命周期
- 关于Activity及启动模式,Fragment,Service的使用以及生命周期
- fragment各种情况下的生命周期、状态保存startActivityForResult是哪个类的方法,在什么情况下使用?
- activity和fragment混合使用时的生命周期
- android开发之Fragment 的生命周期及使用方法详解
- (android实战)Service 生命周期和使用注意项
- Android 实现同个Activity中存在多个Fragment多次切换之后依次返回(一)(Fragment回退栈简单使用)
- Fragment and activity的生命周期对比和区别
- Activity与Fragment的生命周期
- ButterKnife在activity和Fragment中使用的区别
- (原创)Android入门教程(十五)之-- Activity生命周期及其配置使用
- 一张图帮你分析activity与fragment的生命周期及其他们的关系
- Android Activity和Fragment的生命周期图
- Android Fragment---与Activity生命周期的协调
- Activity&Fragment生命周期
- 安卓动画之listView动画,Activity切换动画,Fragment切换动画及LayoutAnimation的使用
- 关于Activity和Fragment生命周期关系
- Android Fragment使用详解及生命周期