android - 检测 onStop 是否由于通知启动一个新的意图呈现一个新的活动或在destroy()之前被调用
问题描述
我有一个在activityA上运行的计时器,在此计时器期间,可能会出现一个通知,并且用户单击它上面的按钮将触发一个新的意图,该意图推动一个新的activityB隐藏当前的一个activityA。
只有在 ondestroy() 之前调用它的 onStop() 时,我必须停止 activityA 中的计时器,因为新的 activityB 位于顶部(用户单击通知并触发意图),而不是通过更改可见性状态(例如:用户按下主页按钮/电源按钮)。
我可以在 onstop() 上停止计时器,但这会在每种情况下停止计时器(通知的新意图、屏幕关闭、按下电源按钮)
我可以在 ondestroy() 上停止计时器,但这样可以防止在呈现另一个活动B时停止计时器。
我正在考虑一种方法来停止计时器访问activityA 导航activityB 上的堆栈。
解决方案
您可以设置一个BroadcastReceiver
in activityA
,通知意图可以触发。在那里,停止你的计时器并启动activityB
。
请注意,如果您的计时器是 的字段,则如果在后台activityA
,它可能会被销毁。activityA
如果这是一个问题,请考虑将计时器保持在前台Service
,或使用警报代替。
推荐阅读
- powershell - 发送电子邮件错误:SMTP 服务器 > 需要安全连接或客户端未通过身份验证
- python - 多项式 logit 在交叉验证的某些折叠中返回 nans
- javascript - 使用 PHP 服务器脚本拖放文件上传的问题
- linux - Linux 中的“int 80h”是什么?
- sql - 正则表达式搜索和删除所有字符,包括最后一个连字符
- git - 为什么我的推送中突然有合并提交?
- json - Python open() as write 在 json 中给出错误的编码
- python - 在 TensorFlow 2.0 中使用 tf.keras.utils.plot_model()
- c++ - 如何使 Xcode 警告静音:“可变长度数组是 C99 功能 [-Wvla-extension]”?
- java - 如何使用关系表SpringBoot查找实体