在正常使用应用的过程中,前台的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已经暂停,用户不再需要它们。

例如,如果你的应用使用到CameraonPause() 方法是一个释放它的好地方。

@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 focusif (mCamera == null) {initializeCamera(); // Local method to handle camera init}
}

Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity相关推荐

  1. Android学习之碎片的生命周期

    一.碎片的状态: 1.运行状态:当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态. 2.暂停状态:当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它 ...

  2. activity 生命周期_从0系统学Android-2.4 Activity 的生命周期

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 本系列持续更新中-. 2.4 Activity 的生命周期 掌握 Activity 的生命周期对于开发者来说是非常 ...

  3. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  4. android代理生命周期,了解 Activity 生命周期

    当用户浏览.退出和返回到您的应用时,您应用中的 在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式.例如,如果您正构建流媒体视频播放器,当用户切换至 ...

  5. 【Android 四大组件之Activity】一文吃透Activity 生命周期

    作者:半身风雪 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收 ...

  6. 什么是生命周期?Activity生命周期的三种状态

    什么是生命周期 生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期.同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态,分别是运行状态.暂停状态和停 ...

  7. activity生命周期(这篇足够了)

    activity生命周期(这篇足够了) 前言 Activity是安卓提供给用户与手机之间可交互的界面组件,也是四大组件中比较重要的组件.那么? Activity从创建到销毁过程是怎么样的呢? 我们从以 ...

  8. 【Android】Activity生命周期

    转载至:http://blog.csdn.net/liuhe688/article/details/6733407 子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者 ...

  9. Android doc |Getting Started|部分 转载 --管理Activity生命周期

    原文 https://developer.android.com/training/basics/activity-lifecycle/index.html 原文被部分改动 管理Activity生命周 ...

最新文章

  1. 手把手教你写ORM(三)
  2. SparkStreaming读取Socket数据
  3. 写SpringBoot项目的时候,报错Ordinal parameter not bound
  4. 什么是用户与计算机硬件之间的桥梁,计算机应用基础简答题(附答案)
  5. R语言学习——处理数据对象的实用函数
  6. ACM卡常处理办法(虽然我到现在没遇到)
  7. oracle 11g 数据库cmd修改用户名密码及创建用户
  8. 2018年全球智能手机销售收入增至5220亿美元 但销量却下降了
  9. 如何战胜软件开发的复杂性?
  10. 使用spss进行系统聚类分析
  11. mysql图书管理系统设计答辩_基于微信的图书管理系统毕业论文+任务书+开题报告+答辩PPT+前后台(Java+Mysql)源码及数据库文件...
  12. 跟我学制作javaEE网上书店销售管理系统(沙箱支付)springboot+vue
  13. 最强Redis实战学习笔记,没有之一!
  14. 教你如何下载并破解IAR
  15. Golang深拷贝浅拷贝
  16. Android天天飞车游戏辅助系统
  17. ICPC North Central NA Contest 2017 H.Zebras and Ocelots
  18. ubuntu安装ROS进行到rosdep update时出现错误,如ERROR: unable to process source ...
  19. 设计模式学习(二)——创建型模式之“工厂模式“
  20. 安卓4.4.4安装哪个微信版本_安卓用户喜大普奔!安卓版微信7.0.13内测版发布,支持深色模式!...

热门文章

  1. Flask 上传自定义头像
  2. ubuntu20.04安装镜像后缀名称解释
  3. 高考平行报志愿计算机录取规则,2019年高考志愿填报指南:高考平行志愿录取规则及填报技巧解读...
  4. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 Spring Cloud Config Client 失败快速响应与超时重试
  5. 老外说中国姓氏^_^
  6. springboot文件上床大小设置
  7. Android声卡的工作原理,夏昆冈作品 - 自由的音频,把手机变成无线声卡 SoundWire 应用教程与体会[Soomal]...
  8. 李治国回应冯大辉的吐槽:关于口碑网和阿里绕不开的往事
  9. 中海达RTK(星移差分)使用指南
  10. 数学加强 第一节 第二课