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

Google官网给的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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值