首页 > 解决方案 > 检测 onStop 是否由于通知启动一个新的意图呈现一个新的活动或在destroy()之前被调用

问题描述

我有一个在activityA上运行的计时器,在此计时器期间,可能会出现一个通知,并且用户单击它上面的按钮将触发一个新的意图,该意图推动一个新的activityB隐藏当前的一个activityA。

只有在 ondestroy() 之前调用它的 onStop() 时,我必须停止 activityA 中的计时器,因为新的 activityB 位于顶部(用户单击通知并触发意图),而不是通过更改可见性状态(例如:用户按下主页按钮/电源按钮)。

我可以在 onstop() 上停止计时器,但这会在每种情况下停止计时器(通知的新意图、屏幕关闭、按下电源按钮)

我可以在 ondestroy() 上停止计时器,但这样可以防止在呈现另一个活动B时停止计时器。

我正在考虑一种方法来停止计时器访问activityA 导航activityB 上的堆栈。

标签: androidandroid-lifecycleactivity-lifecycle

解决方案


您可以设置一个BroadcastReceiverin activityA,通知意图可以触发。在那里,停止你的计时器并启动activityB

请注意,如果您的计时器是 的字段,则如果在后台activityA,它可能会被销毁。activityA如果这是一个问题,请考虑将计时器保持在前台Service,或使用警报代替。


推荐阅读