android Activity的onPause()与onResume()

article/2025/10/24 6:43:44

官方文档地址:http://www.android-doc.com/training/basics/activity-lifecycle/pausing.html#Resume

 

Pause和Resume一个Activity

在一般的app使用中,前台的activity一般是会被视觉组件所遮住的,这就会导致activity的pause。举个例子,当一个半透明的activity打开的时候(就像某种形式的对话框一样),这之前的activity会pause。只要activity仍然部分可见,但是当下activity并不可操作,它就处在pause中了。

但是,一旦这个activity全部被遮住了,并且不可见,它就stop了。(这会在下节课讨论到)

当你的activity进入pause状态的时候,这个系统调用了在activity中的onPause()这个方法,onPause ()这个方法让你能够结束一些正在进行的任务,而这些任务在停止的时候就不能继续了(比如一个视频)。它也能够让你在用户执意要离开你的app时,留存应该被永久保存的信息。如果用户从pause的状态又回到了你的activity,这个系统resume这个activity并且调用了onResume()这个方法。

 

注意:当你的activity收到了一个调用onPause()的请求,它可能表示这个activity将会被停止一段时间并且使用者很可能会再次回到你的activity来。但是这也很可能表示着用户正在离开你的app。

 

图片:当一个半透明的activity遮住了你的activity,这个系统调用了onPause(),并且activity在pause的状态中等待。如果用户当它仍然pause的时候再次回到了activity,这个系统会调用onResume()。

 

pause你的Activity

当这个系统为你的activity调用onPause()的时候,讲道理的话,它意味着你的activity仍然是部分可见的,但是也非常有可能表示是用户正在离开你的activity并且它之后将很快进入stop的状态。你应该经常会在以下情况下用到onPause()。

1、  结束占用CPU的动画或者其他正在运行任务。

2、  提交没有保存的改变,但是只有在用户离开的时候希望这些改变被保存的时候。

3、  释放系统资源,就像广播接收者,对传感器的操纵(就像GPS),或者在acitivity被pause之后和用户不需要的时候,任何可能影响你电池寿命的资源。

 

举个例子,如果你的应用用到了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的速度。(你应该把这种繁重的关闭操作放到onstop()中)

在onPause()方法中,你应该要保持一部分的操作,来保证你的activity结束的时候能够以较快的速度跳转到下一个用户目的地。

 

注意:当你的activity被pause的时候,这个activity实例在内存中是占用位置的,而且在Activity被resume的时候会被再次唤醒。你不需要在resume状态之前的任何回调函数中,重新初始化任何已经被创建过的组件。

 

resume你的Activity

当用户从pause的状态resume你的activity的时候,系统调用了onResume()的函数。

 

考虑到系统每次进入前台运行的时候都会调用这个函数,即使是在这个activity已经被创建过的情况下。同样的你应该实现onResume()来初始化你在onPause()中释放的组件,并且并且执行一些其他在当activity进入resume状态的时候需要执行的初始化(比如打开动画,初始化只有activity获取了焦点后才需要使用的组件)。

 

接下来的onResume()的例子是与onPause()在上面的例子相配的,所以它初始化了在activity被pause的时候需要释放的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}
}

 

 

 

 

 


http://chatgpt.dhexx.cn/article/T8WkP3w4.shtml

相关文章

android中onResume、onPause等方法

程序正常启动:onCreate()->onStart()->onResume(); 正常退出:onPause()->onStop()->onDestory() 程序按back 退出: onPause()->onStop()->onDestory(),再进入:onCreate()->onStart()->onResume(); 程序按…

OnStart()方法和OnResume()方法的区别

文章目录 一、Activity的生命周期简述在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态: 二、OnStart()和OnResume()方法的区别区别: 总结 一、Activity的生命周期简述 在讲onStart()和onResume()的区别之前,必须…

简单介绍几种Java后台开发常用框架组合

01 前言 Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这…

用IDEA进行Java后台开发(一)

想尝试着进行java后台开发,发现能找到的完整工程教程很多都是用eclipse开发的,于是照着搭了一套开发环境,也简单的写了一个测试代码,由于好几年没有使用eclipse了,快捷键实在用的费劲,遂找到了IDEA这个开发…

Java后台学习路线

2021.01.31.更新 2018.11.10更新,请看文章末尾惊喜 或者点击 https://blog.csdn.net/qq_40374604/article/details/83932163 本文摘自---https://blog.csdn.net/u014624241/article/details/52946378---感谢作者的分享 ①一段摘自知乎的文档 Java就业方向目前主…

Java后台开发一:环境搭建

很久之前就想做Java后台开发了,苦于一直没有找到合适的后台开发教程,某日发现一篇很不错的Java后台开发配置文章,记录如下: jdkeclipsesvnmavenmysqltomcat7.0sublime安装包和jar插件 配置管理工具-SVN http://download.csdn.net/…

Java后台开发知识一览

Java后台开发知识一览 1、后端 WEB服务器:Weblogic、Tomcat、WebSphere、JBoss、Jetty 核心框架:Spring Framework 分布式服务框架 Dubbo(感谢浅浅浅丿忧伤指正) 安全框架:Apache Shiro 视图框架:Spr…

Java后台开发常见官方网站汇总

Java后台开发常见官方网站汇总 写在前面开发工具篇JDKJavaSE开发文档Oracle数据库(收费)MySQL数据库(免费)RedisMongoDBJDBCDruid连接池ElasticsearchKibana——Elasticsearch的客户端RabbitMQMavenGitSpring Framework&#xff0…

【Java后台开发规范】--- 日志的输出

文章目录 前言其他类型的规范 日志输出过多日志重复打印批量打印日志中带方法讲故事日志跟踪其他基本要求 前言 做Java开发的,大多数可能都有看过阿里的Java后台开发手册,里面有关于Java后台开发规范的一些内容,基本覆盖了一些通用、普适的规…

用IDEA进行Java后台开发(二)

这篇博客接上一篇,用IDEA进行Java后台开发(一) 上一篇我们已经将工程创建完成了,下面我们将创建一个Servlet,然后本地启动tomcat后调用接口,返回helloWorld,过程如下: 1.在src目录…

Java后台开发入门

转载自: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/71152003 1,什么是Web应用程序 Web应用程序是可以通过Web进行访问的应用程序,最大的好处是访问非常容易。比如淘宝、新浪、网易等门户网站   软件开发领域的三大方向…

Java后台开发:环境搭建

jdkeclipsesvnmavenmysqltomcat7.0sublime安装包和jar插件 配置管理工具-SVN http://download.csdn.net/detail/u013142781/9355417 tomcatPluginV331 http://download.csdn.net/detail/u013142781/9355409 Sublime_Text_2.0.2 http://download.csdn.net/detail/u013142781/…

【Java后台】从零开始的Java后台开发(三)

编写基础的Servlet应用程序 1 Servlet 使用Servlet需要在pom.xml中引入以下依赖&#xff1a; <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.…

【Java后台】从零开始的Java后台开发(一)

1. 工具 tomcat 9.0.65ideal 1. Ideal新建项目 File->New->Project 主要修改如下所示几个地方&#xff0c;之后点击create按钮 创建成功后一开始的目录如下所示&#xff0c; 但先不要动项目&#xff0c;它还在后台下载一些东西&#xff0c;下载完成后&#xff0…

数据迁移,数据库迁移工具,数据库实时同步方案

SyncNavigator是一款功能强大的数据库同步软件&#xff0c;适用于SQL SERVER, MySQL&#xff0c;具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能&#xff0c;支持Windows xp以上所有操作系统&#xff0c;适用于大容量数据库快…

数据迁移常用方法

SQL SERVER几种数据迁移/导出导入的实践 SQLServer提供了多种数据导出导入的工具和方法&#xff0c;在此&#xff0c;分享我实践的经验&#xff08;只涉及数据库与Excel、数据库与文本文件、数据库与数据库之间的导出导入&#xff09;。 &#xff08;一&#xff09;数据库与E…

电脑数据迁移高招,怎么把旧电脑的数据迁移到新电脑

小编的朋友买了台新的笔记本电脑&#xff0c;方便出差工作&#xff0c;需要将公司电脑上的资料也导一份到新电脑里&#xff0c;怎么把旧电脑的数据迁移到新电脑。朋友一点也不想花时间重新下载安装软件&#xff0c;尤其是那些工作需要的应用。下面是她的一些要求&#xff1a; …

数据迁移ETL工具分享

1.概述 ETL(是Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程)&#xff0c;对于企业应用来说&#xff0c;我们经常会遇到各种数据的处理、转换、迁移的场景。 我汇总了一些目前市面上比较常用的ETL数据迁移工具&#xff0c;希望对你会有所帮助。 2. …

flyway(数据库迁移工具)

系列文章目录 主要是用来记录每次迭代的版本sql的表结构的变动.在部署某个版本时,能够快找到这个版本对应的sql,避免出现表结构的错误 Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲&#xff0c;Flyway可以像Git管理不同人的代码那样…

在线数据迁移

在线数据迁移&#xff0c;是指将正在提供线上服务的数据&#xff0c;从一个地方迁移到另一个地方&#xff0c;整个迁移过程中要求不停机&#xff0c;服务不受影响。根据数据所处层次&#xff0c;可以分为 cache 迁移和存储迁移&#xff1b;根据数据迁移前后的变化&#xff0c;又…