1.主要内容
本讲介绍onPause和onResume,主要分析了在onPause函数中应该执行哪些操作。
2.视频讲解
http://www.eyeandroid.com/thread-11291-1-1.html
3.翻译参考
在正常的程序使用中,处于前台运行的activity有时会被另外一些可见的组件遮挡,从而造成activity被暂停。比如,一个半透明的activity(类似一个对话框)被打开,先前那个activity就会被暂停。虽然这个activity还有部分可见,但是当前的焦点不在这个activity上,因此它保持在paused状态。
不过,一旦这个activity被全部遮挡,处于不可见的状态,那么它就是被停止了。(下个教程讨论)
如果你的activity要进入paused状态,系统会调用你的activity种的onPause()方法,这个方法让你能够暂停那些不应该继续运行的行为(比如暂停视频播放),或者保存那些应该永久保存的用户数据。一旦用户从paused状态返回,系统能够调用onResume()方法恢复以前的运行。
提示:当activity接收调用onPause()时,这可能表明activity要暂时进入paused状态,用户可能马上就重新获得activity的焦点。但是,它也是用户离开这个activity时会调用的第一个方法。
图解:当一个半透明的activity覆盖你的activity时,系统调用onPause(),activity就会在Paused状态中等待(1)。系统调用onResume()方法返回activity。
暂停你的activity
当系统调用onPause()方法的时候,技术上说明activity还是能部分可见的,但是大部分情况表明用户要离开activity,它将进入Stopped状态。你通常使用onPause()函数做下面的事:
停止消耗cpu的动画或者运行中的动作。
提交未保存的更改,但是只是保存用户离开后期望永久保存的东西(比如邮件草稿)。
释放系统资源,比如广播接收器,传感器(比如GPS),或者消耗电量的资源,这些资源是activity暂停后用户不再需要的。
例如,如果你的程序需要使用摄像头,onPause()方法中是释放它的好地方。
@Override
public void onPause() {
super.onPause(); // 通常先调用父类方法
// 释放摄像头资源
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
通常情况下,你不需要使用onPause()方法储存用户的修改(比如填写信息的表单)到固定存储器。只有在用户真的期望自动保存数据(比如邮件草稿)的时候才需要在onPause()方法中保存。你应该尽量避免在onPause()方法中让CPU进行密集的工作,比如写入数据到数据库,因为这样会减慢你进入下一个activity的速度(你应该在onStop()中执行这些高负载的关闭操作)。
如果你的activity确实需要被停止话,你应该保持你onPause()方法尽量的简单,这样能够保证快速的转换到用户的下一个目的地。
提示:当你的activity已经被paused,这个activity实例会被保持在内存中,当activity需要被恢复的时候被调用。你不需要再重新初始化组件。
恢复你的activity
当用户从Paused状态恢复你的activity的时候,系统调用onResume()函数。
需要了解的是activity每次进入前台都会调用这个方法,包括activity被第一次创建的时候。这样的话,你必须在onResume()方法中初始化那些onPause()中释放的组件,并且执行任何需要在Resumed状态中需要的初始化工作。(比如开始动画和初始化activity前台状态需要的组件)
下面的例子和上面onPause()的例子相对应,这里初始化暂停时释放的摄像头资源。
@Override
public void onResume() {
super.onResume(); // 调用父类方法
// 当activity取得用户焦点时取得摄像头实例
if (mCamera == null) {
initializeCamera(); // 摄像头初始化的本地方法
}
}
- 大小: 56.2 KB
分享到:
相关推荐
Android应用程序的Activity是用户交互的核心组件,它代表了一个屏幕上的单一任务。每个Activity都会经历一个生命周期,其中包含了若干个状态和回调方法。当应用程序在正常运行时,可能会因为某些事件发生而需要暂停...
了解Activity的生命周期是关键(2.1启动一个Activity - Starting an Activity.pdf、2.2暂停和恢复Activity-Pausing and Resuming an Activity.pdf、2.3停止和重启Activity-Stopping and Restarting an Activity.pdf...
暂停和恢复Activity(Pausing and Resuming an Activity) 一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口...
在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的内容并处理与用户的交互。Activity的生命周期是Android开发者必须深入理解的关键概念,因为它直接影响到应用的性能、资源管理和用户体验。本...
Activity是Android应用开发中的核心组件之一,它负责与用户交互并展示UI。了解Activity的生命周期是每个Android开发者必备的基础知识。Activity的生命周期是由系统管理的,主要包括创建、启动、运行、暂停、停止以及...
Activity是Android应用中的核心组件,它负责用户界面的展示和交互。理解Activity的生命周期对于开发高效、稳定的应用至关重要。在Android系统中,Activity有多种状态,每个状态对应着不同的行为和资源管理。以下是对...
在Android开发中,Activity是应用程序的核心组件,它代表了一个用户可见的屏幕,承载着用户的交互和数据展示。Activity的生命周期是开发者必须掌握的关键概念,因为它决定了程序如何响应用户的操作以及系统资源的...
在Android应用开发中,`Activity`是用户界面的主要载体,它是应用程序中负责与用户交互的组件。本项目"LifeCycleDemo"着重展示了`Activity`的生命周期及其在横竖屏切换时的变化,通过代码实例帮助开发者深入理解这一...
13.3.28 Pausing during Linking (/PAU) 13.3.29 Specifying User Libraries for Quick Languages (/Q) 13.3.30 Setting Maximum Number of Segments (/SE) 13.3.31 Controlling Stack Size (/ST) 13.3.32 Issuing ...
It also has the functions of pausing and preserving historical images. This program is mainly for low frequency unknown signals, for high frequency signals, the best way to use a single sampling.)
在Android应用开发中,活动(Activity)是用户与应用程序交互的主要界面。理解活动的生命周期对于构建高效、响应迅速且用户体验良好的应用至关重要。本教程将深入探讨Android活动生命周期,并通过具体的例子来阐述...
- **暂停与恢复(Pausing & Resuming)**:如果新Activity只部分遮挡当前Activity,例如弹出一个透明对话框,只会调用`onPause()`。当对话框关闭,Activity再次获得焦点时,会调用`onResume()`。 - **销毁...
A helper library for keeping and maintaining the state of Chronometers. How to use it? Creating an instance of ChronometerPersist val chronometerPersist = ChronometerPersist.getInstance(chronometer, ...
- **Suspend/Resume:** Explains the procedures for suspending and resuming USB operations. - **Schedule Traversal Rules:** Outlines the rules for traversing the periodic and asynchronous schedules. - *...
-page geometry size and location of an image canvas (setting) -ping efficiently determine image attributes -pointsize value font point size -precision value maximum number of significant digits to...
- **作业:暂停和恢复爬取(Jobs: pausing and resuming crawls)**:关于如何控制爬虫执行流程的技术。 #### 七、扩展Scrapy Scrapy还可以通过以下方式进一步扩展和定制: - **架构概览(Architecture overview)**:...
4. Pausing/Resuming Containers:该版本中,容器的暂停和恢复功能使得系统的维护和管理更加灵活。 5. Stateful Retry:该版本中,状态 retry 机制的实现,提高了系统的可靠性和稳定性。 6. Client ID:该版本中,...
- **任务管理:暂停与恢复爬取(Jobs: pausing and resuming crawls)**:实现爬虫任务的持久化,便于后续恢复执行。 #### 五、扩展Scrapy - **架构概览(Architecture overview)**:从宏观角度解析Scrapy的内部架构...