android Activity的onPause()与onResume()[通俗易懂]

android Activity的onPause()与onResume()[通俗易懂]官方文档地址:http://www.android-doc.com/training/basics/activity-lifecycle/pausing.html#Resume Pause和Resume一个Activity在一般的app使用中,前台的activity一般是会被视觉组件所遮住的,这就会导致activity的pause。举个例子,当一个半透明的activity打开的时候(就…

大家好,又见面了,我是你们的朋友全栈君。

官方文档地址: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。

 

android Activity的onPause()与onResume()[通俗易懂]

图片:当一个半透明的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 focus
    if (mCamera == null) {
        initializeCamera(); // Local method to handle camera init
    }
}

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137142.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • A new Linux distribution for ethical computer hacking, penetration testing

    A new Linux distribution for ethical computer hacking, penetration testing

  • VS2010的详细安装[通俗易懂]

    VS2010的详细安装[通俗易懂]MicrosoftVisualStudio2010旗舰版的详细安装。安装包:链接:https://pan.baidu.com/s/1-JNyGhwIvasAYQL0GsmzQw密码:fddsstep1、拷贝或下载的安装包(MicrosoftVisualStudio2010.rar)放在E盘(最好不要放在C盘)——>softs——>vs2010——>右击安装…

  • javascript引擎PK:V8 vs Spidermonkey

    javascript引擎PK:V8 vs Spidermonkey一个月前心血来潮瞎折腾了下Nodejs,用ab和JMeter进行简单地压力测试后,不得不佩服它的速度与性能(备注:测试比较了几个框架后得出的结果)。Nodejs是什么,一个基于chrome的javascriptV8引擎的platform,特点是事件驱动,异步非阻塞IO模型,轻量。本文不是给Nodejs做广告的,它只是一个引子,关于Nodejs的具体信息大家自己google吧,这里就不多作说明了。

    2022年10月16日
  • 浅谈 PHP 变量可用字符[通俗易懂]

    浅谈 PHP 变量可用字符[通俗易懂]原文:浅谈PHP变量可用字符先来说说php变量的命名规则,百度下一抓一大把:(1)PHP的变量名区分大小写;(2)变量名必须以美元符号$开始;(3)变量名开头可以以下划线开始;(4)变量名不能以数字字符开头.其实所有编程都类似的命名规范就是:1.变量第一个字符最好是字母或_,不能以数字开头2.第二个字符开始允许数字,字母,_好了,差不多就是这样了,但是这不是我们要说的重点。…

  • Java基础篇:Iterator迭代器

    Java基础篇:Iterator迭代器

  • 数据库课程实践—仓库管理系统(附代码下载)

    数据库课程实践—仓库管理系统(附代码下载)数据库课程实践-仓库管理系统桌面应用程序数据库:SQLServer2008r2IDE:VS2010完成功能:(1)产品入库管理,可以填写入库单,确认产品入库;(2)产品出库管理,可以填写出库单,确认出库;(3)借出管理,凭借条借出,然后能够还库;(4)仓库库存设置,设置库存的初始值,更改库存的上下限值;(5)可以进行盘库,按货物分类,仓库分类和按货号和仓库查找;

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号