Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity

原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html

在APP的正常使用过程中,在前台工作的Activity有时可能会被其他的可视化组件挡住,而引起Activity进入Paused状态。举个例子,当一个半透明的Activity打开后(类似于Dialog那种风格),那么原先的那个Activity便会进入Paused状态。只要Activity仍然只是部分可见,并且它没有获得焦点,那么它就一直保持在Paused状态。

然而,只要activity一旦被全部挡住,并且不可见,那么就会进入Stopped状态。

在系统调用Activity的onPause方法时,activity随之就进入了paused状态,这期间允许你停止一些不应该继续进行的活动(比如视频),还应该对用户的任何信息做持久化存储,万一用户退出了APP。如果用户从Paused状态返回了Activity,系统会调用onResumed方法并回到Resumed状态。

Note:当Activity的onPause方法被调用,这意味着Activity可能会在Paused状态待一会,并且稍后用户可能会再次返回到这个Activity中。无论如何,这通常是用户离开Activity的第一个信号。


上图:当一个半透明的Activity挡住了原先的Activity,系统会调用onPause方法,然后Activity会等在Paused状态(1),如果在Paused状态返回了Activity,那么系统会调用onResume方法(2)。

暂停Activity

当系统调用了onPause方法,这从技术上说activity当前是部分可见状态,但是大多数情况下,这表示用户离开了Activity,并且稍后会进入Stopped状态。你应该一般使用onPause方法做这些事情:

  • 停止动画或者运行中的活动等这类消耗CPU资源的行为。
  • 保存没有存储的改变,但这仅限于用户希望保存的东西(比如电子邮件的草稿)。
  • 释放系统资源,比如广播接收器,正在处理中的传感器(比如GPS),任何用户不再需要的,可能会影响到电量的任何资源。

举个例子,如果应用使用了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方法来持久化存储用户的改变(比如输入表格的用户信息)。唯一的一点就是用户希望这些数据可以自动的存储(比如起草的email)。然而,应该避免在onPause方法中执行高强度的CPU工作,比如写入数据库,因为它会减慢切换到下一个Activity的速度(你应该在onStop方法中做这些重量级操作)。

你应该在onPause方法中保持相对简单的完成操作,为了可以快速过渡到下个Activity。

Note:如果activity在Paused状态,那么activity会常驻在内存中,它会在activity恢复的时候重新被调用。你不需要重新初始化这些在任何回调函数中被重新创建的组件。

恢复Activity

如果用户从Paused状态恢复到了Resumed状态,系统会调用onResume方法。

应该意识到系统每次调用这个方法activity就进入了前台,包括在第一次创建的时候。因此,你应该在onResume中实例化组件,然后在onPause中释放这些组件,每次在activity进入resumed状态的时候执行其必须的初始化操作(比如启动动画和activity获取到焦点之后只实例化要使用的组件)。

下面这个onPause的例子是上面onResume例子的副本,所以应该在activity暂停的时候释放初始化过的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://www.mzph.cn/news/479316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leaf:美团分布式ID生成服务开源

Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自德国哲学家、数学家莱布尼茨的一句话:“There are no two identical leaves in the world.”Leaf具备高可靠、低延迟、全局唯一等特点。目前已经广泛应用于美团金融、美团外卖、美团酒旅等多个…

LeetCode 658. 找到 K 个最接近的元素(二分查找)

1. 题目 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。 示例 1:输入: [1,2,3,4,…

负数的开方到底等于多少?

文:杨树森知乎编:小鹿鹿lulu负数的开方到底等于多少?举个栗子拿出小本本, 一通变换,得到:Really? 且看下面详解乘方来源于乘法,我们可以归纳地定义,设 是一个域,, 则上述的域 可以是有理数域 , 实数域, 或复数域 前两…

综述 | 知识图谱实体链接:一份“由浅入深”的综述

本文转载自公众号:PaperWeekly。 作者丨Nicolas单位丨追一科技 AI Lab 研究员研究方向丨信息抽取、机器阅读理解本文介绍实体链接(Entity Linking)这一技术方向&#xff0…

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之停止和重启Activity

原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/stopping.html#Start 在activity的生命周期内,适当的停止和重新启动activity是一个非常重要的过程,它可以确保用户能感觉到APP一直是存活状态,并且不会丢失他们…

selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’解决

selenium.common.exceptions.WebDriverException: Message: chromedriver’解决: https://blog.csdn.net/weixin_44318830/article/details/103339273 今天在做selenium测试的时候,可能是很久没用了,直接报了这个异常! 相信很多第一次学习selenium的同学们也对这个异…

活动 Web 页面人机识别验证的探索与实践

在电商行业,线上的营销活动特别多。在移动互联网时代,一般为了活动的快速上线和内容的即时更新,大部分的业务场景仍然通过 Web 页面来承载。但由于 Web 页面天生“环境透明”,相较于移动客户端页面在安全性上存在更大的挑战。本文…

利用python提取网站曲线图数据

文章目录数据1数据2数据1 数据目标:曲线图 F12,如图位置输入JSON.stringify(dataSeries.dataPoints) copy,粘贴到data.txt 数据是一个列表,里面是多个字典 编写程序如下: import json as js datafile data1.txt…

论文浅尝 | HEAD-QA: 一个面向复杂推理的医疗保健数据集

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。来源:ACL2019本文构建了一个面向复杂推理任务的多选问答数据集 HEAD-QA,该数据集中的问题来自一个西班牙的医疗保健专业测试,对于具备该方向专业…

Poor Man's BERT: 更小更快的Transformer模型

文 | sliderSun源 | 知乎NLP模型的大小不断增加,随之而来的是可用性降低,TinyBERT,MobileBERT,和DistilBERT都提出了一个独特的知识蒸馏框架,其共同目标是在保持性能的同时减小模型大小。尽管所有这些方法都以各自的方…

LeetCode 429. N叉树的层序遍历(queue)

1. 题目 返回其层序遍历:[[1],[3,2,4],[5,6] ]2. 解题 queue队列解题 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val, vector<Node*> _children) {val _val;children _children;} }; */ class Solu…

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建

原文地址&#xff1a;http://android.xsoftlab.net/training/basics/activity-lifecycle/recreating.html#RestoreState 有这么几个关于activity通过正常渠道销毁的场景&#xff0c;比如用户按下了返回按钮&#xff0c;又或者是在activity中调用了终止信号finish。系统可能也会…

Java动态追踪技术探究

引子 在遥远的希艾斯星球爪哇国塞沃城中&#xff0c;两名年轻的程序员正在为一件事情苦恼&#xff0c;程序出问题了&#xff0c;一时看不出问题出在哪里&#xff0c;于是有了以下对话&#xff1a; “Debug一下吧。” “线上机器&#xff0c;没开Debug端口。” “看日志&#xf…

论文浅尝 | 从树结构的长短期记忆网络改进语义表示

论文笔记整理&#xff1a;窦春柳&#xff0c;天津大学硕士&#xff0c;方向&#xff1a;自然语言处理链接&#xff1a;https://arxiv.org/pdf/1503.00075.pdf动机由于长短期记忆网络&#xff08;LSTM&#xff09;这种具有复杂单元的循环神经网络具有良好的表示序列信息的能力&a…

详解NLP技术中的:预训练模型、图神经网络、模型压缩、知识图谱

NLP近几年非常火&#xff0c;且发展特别快。像BERT、GPT-3、图神经网络、知识图谱等技术应运而生。我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源&#xff0c;而是找准资源并高效学习。但很多时候你会发现&#xff0c;花费…

根因分析初探:一种报警聚类算法在业务系统的落地实施

背景 众所周知&#xff0c;日志是记录应用程序运行状态的一种重要工具&#xff0c;在业务服务中&#xff0c;日志更是十分重要。通常情况下&#xff0c;日志主要是记录关键执行点、程序执行错误时的现场信息等。系统出现故障时&#xff0c;运维人员一般先查看错误日志&#xff…

论文浅尝 | BAG:面向多跳推理问答得双向 Attention 实体图卷积网络

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究兴趣&#xff1a;知识图谱问答来源&#xff1a;NAACL 2019链接&#xff1a;https://www.aclweb.org/anthology/N19-1032/实现多跳推理问答需要模型能够充分理解文本和 query 之间的关系&#xff0c;本…

Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之构建灵活的UI

原文地址&#xff1a;http://android.xsoftlab.net/training/basics/fragments/fragment-ui.html 当设计应用程序时需要支持尺寸较大的宽屏设备时&#xff0c;可以基于可用的屏幕空间在不同的布局中配置并重新使用fragment来提升用户体验。 举个例子&#xff0c;手持设备在同…

LeetCode 669. 修剪二叉搜索树

1. 题目 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索树的新的根节点。 来源&#xff1a;力扣&#xff08…

Pytorch翻车记录:单卡改多卡踩坑记!

文 | 哟林小平知乎先说明一下背景&#xff0c;目前正在魔改以下这篇论文的代码&#xff1a;https://github.com/QipengGuo/GraphWriter-DGLgithub.com由于每次完成实验需要5个小时&#xff08;baseline&#xff09;&#xff0c;自己的模型需要更久&#xff08;2倍&#xff09;&…