1.主要内容
本讲介绍onPause和onResume,主要分析了在onPause函数中应该执行哪些操作。
2.视频讲解
http://www.eyeandroid.com/thread-11291-1-1.html
3.翻译参考
在正常的程序使用中,处于前台运行的activity有时会被另外一些可见的组件遮挡,从而造成activity被暂停。比如,一个半透明的activity(类似一个对话框)被打开,先前那个activity就会被暂停。虽然这个activity还有部分可见,但是当前的焦点不在这个activity上,因此它保持在paused状态。
当系统调用onPause()方法的时候,技术上说明activity还是能部分可见的,但是大部分情况表明用户要离开activity,它将进入Stopped状态。你通常使用onPause()函数做下面的事:
- 停止消耗cpu的动画或者运行中的动作。
- 提交未保存的更改,但是只是保存用户离开后期望永久保存的东西(比如邮件草稿)。
- 释放系统资源,比如广播接收器,传感器(比如GPS),或者消耗电量的资源,这些资源是activity暂停后用户不再需要的。
- @Override
- public void onPause() {
- super.onPause(); // 通常先调用父类方法
- // 释放摄像头资源
- if (mCamera != null) {
- mCamera.release()
- mCamera = null;
- }
- }
通常情况下,你不需要使用onPause()方法储存用户的修改(比如填写信息的表单)到固定存储器。只有在用户真的期望自动保存数据(比如邮件草稿)的时候才需要在onPause()方法中保存。你应该尽量避免在onPause()方法中让CPU进行密集的工作,比如写入数据到数据库,因为这样会减慢你进入下一个activity的速度(你应该在onStop()中执行这些高负载的关闭操作)。
当用户从Paused状态恢复你的activity的时候,系统调用onResume()函数。
- @Override
- public void onResume() {
- super.onResume(); // 调用父类方法
- // 当activity取得用户焦点时取得摄像头实例
- if (mCamera == null) {
- initializeCamera(); // 摄像头初始化的本地方法
- }
- }
1846



被折叠的 条评论
为什么被折叠?



