我有 2 个使用相同 Android 任务的 Activity - 即它们将使用相同的返回堆栈。
我们称 A
为返回栈中的第一个 Activity ,B
为返回栈中的第二个 Activity 。
情况 1: A
收到通知,当 A
在前台然后 B
出现在前台(出于任何原因,比如因为它收到了外部 Intent )。
情况 2:当 A
在前台但另一个应用程序在前台启动时,A
收到通知它进入后台.
问题:我的应用如何区分这两种情况?有没有办法知道转换 A in foreground -> A in background
是否保持当前任务显示在屏幕上?
基本上,我需要在 Android 任务变得可见或不可见时获得一个事件。
最佳答案
如果我对您的理解正确,如果 Activity B
在 A
暂停后没有被激活,您的 Activity A
会做一些不同的事情。
首先,让一个 Activity 在 Activity 不再可见时做某事不是一个好主意。正如我们在 Android 生命周期中看到的那样,它可能会停止:
我会将您的后台代码放入服务中。只要 Activity A
或 B
暂停或恢复,该服务就会收到通知。在那里你可以添加一个必须通过的小超时,直到你开始你的逻辑。
如果你这样做,那将会发生:
案例 1:
Activity A
进入后台并在 onPause 处理程序中向您的服务发送消息。服务启动其超时计时器。 Activity B
启动并在其 onResume 处理程序中向服务发送消息。
现在服务知道它仍然是相同的 Activity 并采取相应的行动。
案例 2:
Activity A
进入后台并发送消息。该服务启动其超时计时器。它超时(我认为 200 毫秒就足够了),现在您的服务知道该任务不再处于 Activity 状态并采取相应行动。
关于android - 如何知道 Android 任务的可见性变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262347/