网站如何修改后台密码,网站开发的基本流程图,珠海网站建设公司排名,贵州省住房和城乡建设厅官网原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html
在APP的正常使用过程中#xff0c;在前台工作的Activity有时可能会被其他的可视化组件挡住#xff0c;而引起Activity进入Paused状态。举个例子#xff0c;当一个半透明的Activit…原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html
在APP的正常使用过程中在前台工作的Activity有时可能会被其他的可视化组件挡住而引起Activity进入Paused状态。举个例子当一个半透明的Activity打开后(类似于Dialog那种风格)那么原先的那个Activity便会进入Paused状态。只要Activity仍然只是部分可见并且它没有获得焦点那么它就一直保持在Paused状态。
然而只要activity一旦被全部挡住并且不可见那么就会进入Stopped状态。
在系统调用Activity的onPause方法时activity随之就进入了paused状态这期间允许你停止一些不应该继续进行的活动(比如视频)还应该对用户的任何信息做持久化存储万一用户退出了APP。如果用户从Paused状态返回了Activity系统会调用onResumed方法并回到Resumed状态。 Note:当Activity的onPause方法被调用这意味着Activity可能会在Paused状态待一会并且稍后用户可能会再次返回到这个Activity中。无论如何这通常是用户离开Activity的第一个信号。 上图当一个半透明的Activity挡住了原先的Activity系统会调用onPause方法然后Activity会等在Paused状态(1)如果在Paused状态返回了Activity那么系统会调用onResume方法(2)。
暂停Activity
当系统调用了onPause方法这从技术上说activity当前是部分可见状态但是大多数情况下这表示用户离开了Activity并且稍后会进入Stopped状态。你应该一般使用onPause方法做这些事情
停止动画或者运行中的活动等这类消耗CPU资源的行为。保存没有存储的改变但这仅限于用户希望保存的东西(比如电子邮件的草稿)。释放系统资源比如广播接收器正在处理中的传感器(比如GPS)任何用户不再需要的可能会影响到电量的任何资源。
举个例子如果应用使用了Camera在onPause方法中最适合去释放它。
Override
public void onPause() {super.onPause(); // Always call the superclass method first// Release the Camera because we dont need it when paused// and other activities might need to use it.if (mCamera ! null) {mCamera.release()mCamera null;}
}
通常情况下并不应该使用onPause方法来持久化存储用户的改变(比如输入表格的用户信息)。唯一的一点就是用户希望这些数据可以自动的存储(比如起草的email)。然而应该避免在onPause方法中执行高强度的CPU工作比如写入数据库因为它会减慢切换到下一个Activity的速度(你应该在onStop方法中做这些重量级操作)。
你应该在onPause方法中保持相对简单的完成操作为了可以快速过渡到下个Activity。 Note:如果activity在Paused状态那么activity会常驻在内存中它会在activity恢复的时候重新被调用。你不需要重新初始化这些在任何回调函数中被重新创建的组件。 恢复Activity
如果用户从Paused状态恢复到了Resumed状态系统会调用onResume方法。
应该意识到系统每次调用这个方法activity就进入了前台包括在第一次创建的时候。因此你应该在onResume中实例化组件然后在onPause中释放这些组件每次在activity进入resumed状态的时候执行其必须的初始化操作(比如启动动画和activity获取到焦点之后只实例化要使用的组件)。
下面这个onPause的例子是上面onResume例子的副本所以应该在activity暂停的时候释放初始化过的camera对象。
Override
public void onResume() {super.onResume(); // Always call the superclass method first// Get the Camera instance as the activity achieves full user focusif (mCamera null) {initializeCamera(); // Local method to handle camera init}
}