Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity
在正常使用应用的过程中。前台的activity在一些时候会被其它的组件遮挡,导致这个activity暂停。举个样例。当一个半透明的activity被打开(比如一个dialog样式的activity),它之前的activity就会暂停。
假设这个activity长时间一直仅仅能部分可见而且获取不到当前的焦点。它就保持暂停状态。
然而,一旦这个activity被全然遮挡而且全然不可见,它就会停止(我们会在下此课程中讨论)。
当你的应用进入到暂停状态,系统会调用你的activity的onPause() 方法,它同意你停下正在进行的操作,这些操作不能再暂停状态继续(比如播放一个视频),你还能够存储一些当用户回到应用后须要持久化的信息。
假设用户回到你的应用。系统会恢复它,而且调用onResume()方法。
提示: 当你的应用接收到onPause()的调用时,它可能就表示这个activity将要暂停一会儿,用户可能会再次回到这个activity。然而。它通常表示用户离开你的应用的第一步。
图1. 当一个半透明的activity挡住你的activity,系统会调用onPause() 方法。同一时候这个activity将会在Paused
状态下等待。假设当用户回到这个activity,它仍处于暂停状态,那么系统会调用onResume() 方法。.
暂停你的Activity
当系统调用你的activity的onPause() 方法时,从技术上来讲你的activity仍然部分可见,可是这通常表示用户正在离开你的activity,同一时候它立即要进入Stopped状态。
你通常应该使用onPause() 回调来:
- 停止可能会消耗CPU资源的动画或者不论什么正在进行中的操作。
- 提交为保存的改变,前提是当用户离开这个activity时期望这些改变被保存(比如一个邮件草稿)。
- 释放系统资源,比如广播接收者。传感器(像GPS)的处理,或者不论什么将会费电的资源,由于你的activity已经暂停,用户不再须要它们。
比如,假设你的应用使用到Camera,onPause() 方法是一个释放它的好地方。
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first // Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
通常来说。你不须要使用onPause() 方法来存放用户的改变(比如填入表单的用户信息)至长久的存储上。
唯一一个须要用户在onPause方法中持久化用户改变至永久存储上的情况是你非常确定用户期望改变会被自己主动保存(比如当起草一个email)。
然而,你应该避免在onPause()状态下运行CPU密集型操作。比如写数据库。由于它会减慢切换到下一个activity的速度(作为取代。你应该运行高负载的关闭操作)。
你应该保持这些操作在onPause() 方法中依照相对简单的顺序完毕。这样。假设你的应用被停止后可以迅速切换到用户的下一个目的地。
提示: 当你的activity被暂停时,这个Activity 实例被保存在内存中。在activity恢复时会被又一次调用。你没有必要在不论什么回调方法中又一次初始化已经创建过的组件来让activity回到Resumed状态。
恢复你的Activity
当用户从Paused状态恢复activity时,系统会调用onResume() 方法。
记住系统在每次activity进入到前台时都会调用这种方法。包含它第一次被创建。
这种话,你就必须在onResume()的实现方法中初始化在onPause()方法被释放的资源,而且其它的资源仅仅能在activity进入到Resumed状态下才干运行初始化操作。
以下这个onResume() 方法的演示样例相应着上面的onPause() 方法的演示样例,因此在onResume()方法中要初始化在activity暂停时要释放的相机资源。
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first // Get the Camera instance as the activity achieves full user focus
if (mCamera == null) {
initializeCamera(); // Local method to handle camera init
}
}
Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity的更多相关文章
- Android学习路线(十四)Activity生命周期——停止和重新启动(Stopping and Restarting)一个Activity
正确地停止和重新启动你的activity在activity的生命周期中是一个非常重要的过程.这样可以确保你的用户感觉到你的应用一直都活着而且没有丢失进度.你的activity的停止和重新启动时有几个重 ...
- Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment
你能够把fragment看成是activity的模块化部分.它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个"子activity&quo ...
- Android 学习之活动的生命周期
•返回栈 Android 中的活动是可以叠层的: 我们每启动一个新的活动,就会覆盖在原活动之上: 然后点击 Back 键会销毁最上面的活动,下面一个活动就会重新显示出来: 其实 Android 是使用 ...
- android学习笔记28——Activity生命周期
Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...
- Android编程: Activity生命周期和LogCat使用
学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建 onCreate重启 onRestart开始 onStart恢复 ...
- Android Activity生命周期详讲
管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...
- android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...
- 浅谈Android之Activity生命周期
Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Ac ...
- 【Android - 组件】之Activity生命周期的全面分析
Activity是Android四大组件之首,其重要性不言而喻,Activity的生命周期更是我们了解Android工作机制的重中之重.我们一般将Activty的生命周期做两种情况下的理解,即正常情况 ...
随机推荐
- 从Oracle转到Mysql前需了解的50件事
我本人比较关心的几点: 1. 对子查询的优化表现不佳. 2. 对复杂查询的处理较弱 4. 性能优化工具与度量信息不足 12. 支持 SMP (对称多处理器),但是如果每个处理器超过 4 或 8 个核( ...
- 检测Nginx访问成功(状态码200)的IP及次数
cat access.log |awk '{print $1,$9}'|grep '200'|sort | uniq -c|awk '{print $2" "$1}'
- matlab基本语法
MATLAB基本语法 点乘运算 , 常与其他运算符 点乘运算,常与其他运算符联合使用(如.\) 矩阵生成 矩阵生成 向量生成或子阵提取本节将会介绍一些MATLAB的基本语法的使用. 持续更新... 在 ...
- Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)
不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793914 (表示感谢) 前期博客 Neo4j沙盒实验申请过 ...
- Python 对象初识
# Demo1class Penson: animal = 'big mom' plant = 'flower' def __init__(self,name,age,sex,job): self.n ...
- activity_note
在activiti任务中,主要分为两大类查询任务(个人任务和组任务): 1.确切指定了办理者的任务,这个任务将成为指定者的私有任务,即个人任务. 2.无法指定具体的某一个人来办理的任务,可以把任务分配 ...
- ZBrush如何把不同材质赋予同一个模型上
ZBrush 作为最专业的数字雕刻与绘画软件,能够制作出高质量的3D模型,包括模型的颜色贴图和材质属性.不同材质可以改变照明在表面上的反应,以便模型表现出光泽.凹凸.反射.金属性或透明效果.ZBrus ...
- 5G商用时代来临!这些产业将发生变革
5G商用时代来临!这些产业将发生变革 值得注意的是,在获得工信部发放的5G网络试验频率后,三大运营商已在各大城市建设5G基站,开展5G外场测试.华为亦适时表示,已经在中国40多个城市与中国三大运营商开 ...
- 在ros中集成Fast-rtps库并运行hello world 程序
1.介绍 ROS:自行百度 Fast-RTPS:是eProsima公司对RTPS标准的一个实现,也就是函数库.RTPS是DDS标准中的一个子集.RTPS:Real Time Publish Subsc ...
- Day 04 [与用户交互,格式化输出,基本运算符]
Python 的与用户交互 name=input("请输入姓名:") height=input('请输入身高:') weight=input('请输入体重:') 在python3中 ...