关于Activity中onStop和onPause调用时机的各种误解

2023-11-06

源码 : https://github.com/w-g-b/ActivityReview

正确结果

假设当前的FirstActivity为A,要调用A的onPause方法而不调用onStop方法

 

1. 在AndroidManifest文件中,将ThirdActivity(B)的theme属性设置为对话框样式(也可以使用自定义主题,也不必一定是对话框,也可以设置成透明样式的Activity)

2. 在A中通过startActivity启动B,这个时候就只会调用A的onPause方法,并会调用B的onCreate,onStart,onResume方法

3. 关闭B时,只会重新调用A的onResume方法

目前我的测试也就只有这种情况下才会只调用A的onPause方法,而不调用onStop方法

 而会调用onStop方法的情况则比较多,比如: 锁屏,按Home返回桌面,来电,或者像微信PC端请求登录时,客户端突然蹦出现的确定信息 ,都会调用onStop方法

有关onStop和onPause时机的各种误解

网上很多人说,当弹出对话框时会调用onPause方法或者说活动可见但被遮挡而不能交互时,会调用onPause,所以做了如下的测试,证明这种说法是错的

1. 当发生弹窗,或者弹吐司(Toast)的时候,并不会调用onPause方法

2. 当有新消息,比如说新短信提醒或者像微信那种新信息提示时,也不会调用onPause方法

3. 这个也是有利的证据,下拉Android系统自带的通知栏,此时当前Activity被遮挡,并且无法进行交互,但是仍然没有调用onPause方法

而关于onStop的说法是,当Activity不可见的时候会调用onStop方法,这里也举个反例。通过将对话框主题的Activity设置为全屏并且是可见的,观看打印结果

这里使用自定的对话框样式:

1. 在模块/src/main/res/values/styles.xml添加一个新的样式:

2. AndroidManifest中设置该theme

3. 代码中实现全屏

4. 如果说状态栏还在有影响,则可以添加如下代码,隐藏掉状态栏

5. 此时,启动该对话框样式的Activity则是全屏的,完全遮挡了后面的Activity

6. 此时的打印信息,仍只会调用前面那个Activity的onPause方法

 另外还有一种比较神奇的现象:就算是跳到其他页面,使得该Activity完全不可见,也不会调用该的onPause, onStop方法

1. 首先得是MIUI系统,其他系统我不清楚有没有这功能

2. 使用系统自带的截图功能截图,此时会截完图会出现一个缩略图在右上角展示

3. 点击缩略图跳转,进入图片处理界面,此时改界面完全遮盖了原有的Activity

4. 按返回键返回原来的界面

在这整个过程当中,并不会调用onPause或者onStop方法。

当然,如果你在图片处理界面点击了发送或者美化,才会开始调用原Activity的onPause和onStop方法

感觉网上的信息真的是太多太复杂了,不一定可信,还是需要自己亲自测试一下,才能验证结果。代码已上传,详解上面的github链接↑↑↑ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Activity中onStop和onPause调用时机的各种误解 的相关文章

  • 订阅购买后失效日期无效

    我有一个带有应用内订阅的 Android 应用程序 用户购买订阅后 我通过 Google API 通过我们的后端请求 validUntilTimestampMsec 和 initiationTimestampMsec 返回的时间戳 init
  • 使用 gradle-retrolambda 和 Lightweight-Stream-API 过滤 Android 中的对象列表

    我正在尝试在我的 Android 应用程序中过滤 Java 中的对象列表 为此我遵循这个答案 https stackoverflow com a 13140130 3546389 Java 8建议 但由于Android SDK不支持Lamb
  • 使用 android 将图像上传到 Flickr

    我需要将 Flickr 与 android 集成 我已完成身份验证 我需要将图像上传到 flickr 但我不知道如何执行相同操作 我参考文件 http www flickr com services api upload api html
  • 如何检测手机一整圈(360 度)?

    由于我在网络上搜索没有找到任何相关答案 因此我发布了有关检测的问题360度转弯使用加速度计绕其轴的 Android 设备 例如 在横向模式下围绕 y 轴 假设在起始位置 y 值为 0 设备平坦于地面 当手机向前旋转 90 度时y 10 18
  • 使用 HashMap 映射 String 和 int

    我有一个显示国家 地区名称的列表视图 我已将名称作为字符串数组存储在 strings xml 中 称为国家 地区名称 在填充 ListView 时 我使用从 strings xml 读取的 ArrayAdapter String count
  • Android 偏好设置中的“是”或“否”确认[重复]

    这个问题在这里已经有答案了 我需要在 设置 中实现 重置 选项 单击该设置后 将打开一个简单的对话框 要求确认 我看过了DialogPreference但我似乎无法在任何地方找到好的解决方案或教程 有人可以帮我吗 我是初学者 想法甚至代码都
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • 使用audioSessionId值实例化AudioFx类?

    我已经阅读了 Android API 并尝试在互联网上搜索有关声明自定义audioSessionId然后用它audioSessionId初始化 AudioFx 类并为我的 MediaPlayer 或 AudioTrack 分配硬编码audi
  • 视图随软键盘移动,遮挡其他 UI 对象

    我有一个容器视图 我希望它始终位于视图底部 位于 ScrollView 下方 ScrollView 有一些 UI 对象 其中一个是 EditText 对象 目前 当用户点击 EditText 对象内部时 android softkeyboa
  • android gradle插件-离线安装

    我必须在离线电脑上安装 android gradle 插件 通过谷歌搜索 我了解到我可以通过本地 Maven 存储库来做到这一点 但从不成功的尝试和所有关于这个问题的质量保证中我知道这并不简单 我从来没有和maven一起工作过 有经验的人可
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • Android 10 中没有设备筛选器的 USB_DEVICE_ATTACHED

    我正在开发一个 Android 应用程序 它在清单中为 BroadcastReceiver 注册了四个意图过滤器 这些都是 android hardware usb action USB DEVICE ATTACHED android ha
  • 地理围栏不可用以及如何处理

    我正在 Android 上使用地理围栏 它在大多数手机上都工作正常 但在其中一些上 它不起作用 在我的错误日志中显示 地理围栏不可用 某些用户没有为 Google Play 服务启用位置跟踪 我认为这就是地理围栏在他们的手机上不起作用的原因
  • 布局聊天气泡问题:TextView 占满整个屏幕

    我正在研究泡泡聊天 我使用具有两种布局的适配器 一种用于传入消息 另一种用于我的消息 适配器工作正常 我的问题在于传入布局 无法很好地显示传入时间文本 当消息文本增长时 会填满屏幕的整个宽度 并隐藏消息时间的文本 第一个问题 如何才能实现这
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • Android 模拟器提示和技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Android O 的“android:fontFamily”时出现错误“文件名必须以 .xml 结尾”?

    Android O 引入了一项新功能 XML 中的字体 它允许您将字体用作资源 我正在创建font资源文件中的文件夹 由安卓开发者 https developer android com preview features working w
  • 手动添加带有依赖pom/iml文件的aar

    由于我无法使用私人 Maven 来共享我的库 因此我正在考虑共享 aar 并导入到另一个项目中 当 aar 和 jar 文件不包含任何依赖项时 就会出现问题 因此 一旦我在android studio中手动导入aar 使用Import JA
  • 无法 ACTION_VIEW 外部存储上的文件

    我的 Android 手机的外部存储中有一个文件 在本例中是模拟的 知道通往它的路径和 或拥有File代表它的对象 我如何使用Intent在适当的应用程序中打开它 我尝试的第一件事是 startActivity new Intent Int
  • Android 可扩展列表视图随机播放子项

    你好 我正在使用 Android Expandable listview 并用不同的视图在其中膨胀子视图 我遇到的问题是 当我展开视图然后打开另一个父视图时 布局中的子视图会变得混乱并在代码中膨胀错误的布局 这是我的两个项目的示例代码 这是

随机推荐

  • C语言堆排序

    堆排序 Heapsort 是一种在时间复杂度上达到了最优的基于比较的排序算法 堆排序算法是指利用堆这种数据结构所设计的一种排序算法 堆积是一个近似完全二叉树的结构 并同时满足堆积的性质 即子节点的键值或索引总是小于 或者大于 它的父节点 堆
  • 为什么想来我们公司工作?- 面试常见问题解析

    在面试的过程中 你的面试官可能会问你这样一个问题 你为什么想在我们公司工作 这是面试最常见的问题之一 这个问题看似简单 但回答时一定要提前有所准备 一般来说 面试官在面试时提问这个问题是希望通过应聘者的回答来衡量应聘者对他们公司的感兴趣程度
  • 综述:运动目标跟踪算法

    运动目标跟踪算法总结 1 传统的目标跟踪算法 运动目标跟踪 首先对目标进行有效地表达 然后在接下来的视频序列的每一帧中找到相似度与目 标最大的区域 从而确定目标在当前帧中的位置 早期的生成式方法主要有两种思路 1 依赖于目标外观模型 通过对
  • 华为2018校园招聘(提前批) 笔试 输出ascii最小的最长连续字符串

    题目 给定一串字符 里面有些字符有连续出现的特点 请寻找这些连续字符串中最长的串 如果最长的串有多个 请输出ascii最小的个 思路 利用start和end来记录当前连续出现的子字符串的起始位置 如果当前字符串长度 gt 历史最大长度或者两
  • 【OpenCV学习笔记】【算法学习】一(模板匹配)

    include
  • OpenCV的常用函数

    OpenCV的常用函数 1 imread函数 2 namedWindow函数 3 imshow函数 4 输出图像到文件 imwrite函数 1 imread函数 首先 我们看imread函数 可以在OpenCV官方文档中查到其原型如下 Ma
  • 2023年交通与智慧城市国际会议ICoTSC 2023

    会议日期 2023 5 26 至 2023 5 28 会议简介 2023年交通与智慧城市国际会议 ICoTSC 2023 重要信息 会议网址 www icotsc org 会议时间 2023年7月28 30日 召开地点 长沙 截稿时间 20
  • Unity3D相关面试题

    Unity3D相关面试题 第一部分 1 请简述值类型与引用类型的区别 2 C 中所有引用类型的基类是什么 3 请简述ArrayList和List的主要区别 4 请简述GC 垃圾回收 产生的原因 并描述如何避免 5 请描述Interface与
  • 一个简洁的cublasSmatinvBatched应用示例

    可以简单地粘贴放入一个cuBLAS sample的文件中替代运行 一个简介的cublasSmatinvBatched 示例 Includes system include
  • Mindmanager如何可以取消自动首字母大写

    主页 字体 设置字体样式 格式字体 文本和大写 文本大写 无 参考网址 https tieba baidu com p 3752136361
  • SSM整合框架(spring+spring MVC)

    SSM整合框架 spring spring MVC 1 创建数据库配置文件database propreties driver com mysql jdbc Driver url jdbc mysql localhost 3306 数据库名
  • 编译安装webos

    一 安装手册 https www openwebosproject org docs build guide UwLO5mKSzlA 二 安装步骤 1 安装依赖库 sudo apt get update sudo apt get insta
  • raise NoReverseMatch("%s is not a registered namespace" % key)

    很蛋疼 第一次仿照写django项目也是出现这个问题 现在又跟着追梦人物的博客又写了一遍 昨晚因为这个问题搞到晚上一点多 出现的问题 raise NoReverseMatch s is not a registered namespace
  • MySQL主从复制(主:linux Redhat MySQL 5.1;从:win10,MySQL5.5)

    MySQL主从复制 主 linux Redhat MySQL 5 1 从 win10 MySQL5 5 主MySQL设置 从MySQL设置 查看主服务状态 show master status 注意事项 主MySQL设置 在linux中的
  • Q Learning学习笔记

    Q Learning学习笔记 这两天跟着莫烦大神的视频将强化学习 Reinforcement Learning 中的Q Learning学了一遍 颇有收获 便记录于此 希望大家不吝赐教 欢迎补充纠错 文章目录 Q Learning学习笔记
  • R语言小作业2(向量操作)

    任务一 生成简单向量 任务内容 生成如下向量 金融1801甲 金融1801乙 金融1802甲 金融1802乙 金融1803甲 金融1803乙 金融1804甲 金融1804乙 代码及结果 gt x lt paste 金融 rep c 1801
  • ubuntu系统构建VNC虚拟远程桌面

    文章目录 1 准备工作 2 安装ubuntu远程桌面 2 1 Gnome安装 2 2 xface安装 3 安装VNC服务器 4 配置VNC服务 4 1 VNC密码设置 4 2 启动脚本设置 4 3 启动VNCSERVER 4 4 查看开启的
  • 利用SQL注入进行文件读写(详细步骤的实现+图)【靶场:sqli-labs/Less-7】

    原理啊 成因啊就不再啰嗦了 直接上实现过程 一 环境 攻击机 192 168 67 140 目标主机 192 168 67 143 二 实际操作 利用mysql的读写文件函数进行文件的读取 在目标主机的 win7 2 E盘下新建一个flag
  • [激光原理与应用-27]:《激光原理与技术》-13- 激光产生技术 - 激光稳频技术

    目录 前言 第1章 什么频率的稳定性和可复现性 1 1 频率的稳定度 1 2 频率复现性 第2章 影响激光频率稳定的因素 2 1 温度引起腔长变化 则有 2 2 大气变化引起折射率的变化 2 3 机械振动对频率稳定性的影响 2 4 外部因素
  • 关于Activity中onStop和onPause调用时机的各种误解

    源码 https github com w g b ActivityReview 正确结果 假设当前的FirstActivity为A 要调用A的onPause方法而不调用onStop方法 1 在AndroidManifest文件中 将Thi