我有两个使用相同Android任务的活动 - 即他们将使用相同的后台堆栈。
让我们调用A
后堆栈中的第一个活动,并B
后堆栈中的第二个活动。
案例1: A
会在A
位于前台时通知其后台,然后B
位于前台(对于任何理由,因为它收到了外部意图)。
案例2: A
会在A
位于前台,但另一个应用程序在前台启动时收到通知。
问题:我的应用如何区分这两种情况?有没有办法知道转换A in foreground -> A in background
是否保持当前任务显示在屏幕上?
基本上,当Android任务变得可见或不可见时,我需要获取一个事件。
答案 0 :(得分:3)
如果我理解正确,如果在A
暂停后未激活活动B
,则您的活动A
会有所不同。
首先,当一个活动不再可见时让它做某事并不是一个好主意。正如我们在Android生命周期中看到的那样,它可能会停止:
我会将您的后台代码放入服务中。只要活动A
或B
暂停或恢复,此服务就会收到通知。在那里,您可以添加一些必须通过的超时,直到您开始逻辑。
如果你这样做,那就会发生:
案例1:
活动A
进入后台并在onPause处理程序中向您的服务发送一条消息。服务启动其超时计时器。活动B
开始运行,并在其onResume处理程序中向服务发送消息。
现在服务人员知道它仍然是相同的活动,并采取相应的行动。
案例2:
活动A
进入后台并发送消息。该服务启动其超时计时器。超时(我认为200毫秒就够了)现在你的服务知道任务不再有效并且相应地采取行动。
答案 1 :(得分:0)
在活动生命周期中使用日志或Toast来显示消息
答案 2 :(得分:0)
在活动B中保留一个静态标志。将其设置为恢复,并在暂停时取消设置。
答案 3 :(得分:0)
覆盖onPostResume
@Override
protected void onPostResume() {
//Your code here
super.onPostResume();
}