Pausing and Resuming an Activity
在正常的app使用时,前台的activity有时被其他课时的组建所受阻而暂停。例如,当一个半透明的activity打开(诸如一个该样式的对话框),activity就会暂停。只要是部分可见但目前仍未获得焦点的activity,它保持暂停状态。
然而,一旦activity完全被阻塞和不可见时,它会停止(这将在下一课讨论)。
当你的activity进入暂停状态,系统在你的activity中调用onPause()方法,,你可以停止正在进行的行为,不应该继续而停了下来(如视频)或保存任何应永久保存的信息,以防用户继续离开应用程序。如果用户从暂停状态返回到你的activity,系统恢复它并调用onResume()方法。
图解:当一个半透明的activity掩盖了你的activity,系统调用onPause()方法,并在(1)处等待。如果用户返回到该activity,而它仍处于(1)的状态,系统调用onResume()方法(2)
暂停你的Activity
当系统为你的activity调用onPause()方法时,这在技术上意味着你的活动仍是部分可见,但大多数情况下是用户要离开你activity的迹象,它会很快进入停止状态。通常你应该使用onPause()方法去:
(1)停止当前的动画效果或者其他消耗CPU的行为
(2)提交为保存的修改,但前提是用户希望被永久修改(eg:未发送的邮件)
(3)释放系统资源,eg:broadCatdReceivers,GPS,以及一切会影响你电量和CPU的操作,前提是接下来的操作你的用户不再需要它们
例如,如果你的应用程序使用相机时,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()当你某些用户期望的变化自动保存(例如当起草一封电子邮件)。然而,你应该避免在cpu密集工作期间调用onPause(),如写入数据库,因为它会减缓过渡到下一个activity的速度(您应该在onStop()中执行重载关闭操作)。
你应该保持onPause()方法完成相对简单的操作,以保证在程序停止时快速过渡到用户的下一个目的地。
重新占有你的Activity
当用户从暂停状态重新回到activity,系统调用onResume()方法。
请注意,每次你的activity进入前景时系统会调用这个方法,包括第一次创建的时候。因此,你应该实现onResume()来初始化你在onPause()中释放的组件并且做一些每次进入Resumed状态时都会发生的初始化的工作(如开启一个动画和当用户获得焦点时要初始化的组件)
下面onResume()的例子是对应onPause前面的例子(),所以当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
}
}
转载于:https://www.cnblogs.com/ztSpace/p/4217200.html
Pausing and Resuming an Activity相关推荐
- [Android Training视频系列]2.2 Pausing and Resuming an Activity
[Android Training视频系列]2.2 Pausing and Resuming an Activity 1.主要内容 本讲介绍onPause和onResume,主要分析了在onPause ...
- Pausing and Resuming an Activity 暂停和恢复活动
Pausing and Resuming an Activity 暂停和恢复活动 Previous Next Get started This lesson teaches you to ...
- Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity
在正常使用应用的过程中,前台的activity在一些时候会被其他的组件遮挡,导致这个activity暂停.举个例子,当一个半透明的activity被打开(例如一个dialog样式的activity), ...
- 06Pausing and Resuming an Activity
本节要点:paused和stop状态下的生命周期和该生命周期应该干的事情.(需要注意的是在onStop方法中释放的资源,如果Activity重新进入onResume,必须重新初始化) //====== ...
- Managing the Activity Lifecycle
原链接:http://developer.android.com/training/basics/activity-lifecycle/index.html As a user navigates t ...
- (android文档原创翻译)管理Activity的生命周期一
( 英文原文链接地址) 1.启动你的Activity 不同其它的应用程序通过main()方法来启动,android系统是按照一定的顺序通过调用其生命周期(lifecycle)的回调方法来启动或者结束一 ...
- c语言mysql源代码,永盈会-官方网站
SLF4J1.7 一个日志模板,从traceback打印异常受启发做的模板,可被pycharm esclip sublime等ide识别和跳转. 安卓构架组件--向项目添加组件(Adding Comp ...
- 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- Android 10.0 Activity启动详解(二)
Android 10.0 Activity启动详解(一) 我们在上一篇博客中已经介绍了关于Activity的一些基础概念.这一篇博客我们以Android 10.0的代码来分析Activity的启动流程 ...
- Android 深入研究之 ✨ Activity启动流程+Activity生命周期✨
Activity分析目录 前言 Activity生命周期 1.activity的四个状态 2.activity的生命周期 3.activity优先级 Activity启动流程 Activity的启动流 ...
最新文章
- 美法加三位科学家获2018诺贝尔物理学奖
- 软件工程 之 动物世界
- 【快乐水题】2000. 反转单词前缀
- ffmpeg speex转换为mp3或者aac
- 计算机基础知识:什么是位、字节、字、KB、MB
- 在HubSpot是如何应对Fat JAR困境的
- HDU 5517---Triple(二维树状数组)
- 让画面更逼真!这个强化超分辨率GAN让老游戏迎来第二春 | 代码+论文+游戏MOD...
- 流畅的python 18章
- 白帽子讲web安全笔记
- 三边定位算法在OMNet++上的简单实现
- Linux下文件命名规则
- 利用input[type=range]制作一个简易的音乐播放器
- 在c语言中把x和y互换怎么编译,已知int x=10,y=12;编程将x和y的值相互交换
- 权值衰减和L2正则化傻傻分不清楚?
- DM MPP集群(带交叉守护进程)安装配置
- 数据库函数依赖与候选码求解
- 作用域和自由变量的介绍
- 20190722华为OPPO小米夜间省电模式调研
- sbt的安装和应用(详细步骤)
热门文章
- kubernetes pod往宿主机拷贝文件
- Django中Python3安装Crypto使用RSA
- vue学习-处理边界-依赖注入
- liunx中常用命令 -大数据
- Matlab 单形法原理,实验报告(单纯形法的matlab程序).doc
- 页面跳转_PyQt5多页面跳转
- linux之VMware安装Centos7
- 动画效果之 Canvas学习-globalCompositeOperation详解
- python 3.5.2 下载(带资源免费)
- linux文件权限中 chmod、u+x、u、r、w、x分别代表什么