前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 生命周期中每个函数适合处理的事件

Android 生命周期中每个函数适合处理的事件

作者头像
望天
发布2018-08-02 11:37:51
8040
发布2018-08-02 11:37:51
举报
文章被收录于专栏:along的开发之旅along的开发之旅

Google官网给的Activity声明周期图:

Activity声明周期
Activity声明周期

从这种图中,我们可以知道Activity生命周期是: onCreate -> onStart -> onResume -> onPause -> onStop ->onDestroy. 更详细一点就是 onCreate是ActivityA创建时调用, onStart是用户能看见ActivityA时调用(但是不可以交互), onResume是用户与ActivityA可交互时调用. 当另外一个ActivityB弹出(比如广告),遮盖住ActivityA一部分时, 调用ActivityA的OnPause方法(因为此时ActivityA不能交互了), 然后调用ActivityB的onCreate, onStart, onResume方法. 如果此时ActivityB整个遮盖住了ActivityA, 就会调用ActivityA的onStop方法(因为此时ActivityA不能看到了). 如果用户彻底退出应用, 就会执行ActivityA的 onDestroy方法. 再详细一点就要涉及到activity的状态了.因为一个activity有三个状态,分别为: - Resumed - Paused - Stopped 通过调用onCreate, onStart, onResum, onPause, onStop, onDestroy就可以在这些状态间转换.

但是在每个方法里,都适合做些什么任务呢? 在谷歌官方文档中,这样说道每个方法的作用: 1. onCreate: 当activity第一次创建时调用.这里应该完成所有静态资源的建立, 比如使用setContentView(int)和布局资源定义你的UI视图, 使用findViewById(int)取出程序中需要交互的控件, 绑定数据. 此时视图还不存在,无法调用动画等. 还有需要注意, 每次activity启动, 不一定都会调用这个函数. 当当前activity只是被覆盖一部分, 当前activity再次可交互时,是只调用onResume方法, 不会调用onCreate方法. 2. onStart: 这里不是activity对用户是否可见的最好的指示器 3. onResume: 打开独占设备,如相机,在onPause中释放. 4. onPause: 在这里系统将要离开当前Activity, 恢复其他activity. 用户在程序里做的任何改变都应该在此刻提交(通常用ContentProvide来保存数据). 还有需要在这里停止动画和其他耗费CPU的事件来确保转换到下一个activity的流畅度. 请记住:这个方法的实现必须很快完成, 不能占用太多时间, 因为在这个方法完成之前, 下一个activity不会恢复. 如果这个方法耗时较长, 就会影响用户体验. 如果对应的onPause()在500ms内还没有执行完,ActivityManagerService就会强制关闭这个Activity. 另外一个请记住的是:如果当前activity拥有独占资源(比如相机), 必须在这里释放, 以免在下一个activity中需要用到. 5. onStop: 请注意: 在内存不足而导致系统无法保留此进程的情况下, onStop() 可能不会被执行。

几乎所有Activity的子类,都会实现onCreate和onPause这两个方法.

另一篇讲的很赞的文章: http://blog.csdn.net/zhao_3546/article/details/12843477

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档