如何知道Android任务的可见性变化?

时间:2014-04-24 07:18:39

标签: android task

我有两个使用相同Android任务的活动 - 即他们将使用相同的后台堆栈。

让我们调用A后堆栈中的第一个活动,并B后堆栈中的第二个活动。

案例1: A会在A位于前台时通知其后台,然后B位于前台(对于任何理由,因为它收到了外部意图)。

案例2: A会在A位于前台,但另一个应用程序在前台启动时收到通知。

问题:我的应用如何区分这两种情况?有没有办法知道转换A in foreground -> A in background是否保持当前任务显示在屏幕上?

基本上,当Android任务变得可见或不可见时,我需要获取一个事件。

4 个答案:

答案 0 :(得分:3)

如果我理解正确,如果在A暂停后未激活活动B,则您的活动A会有所不同。

首先,当一个活动不再可见时让它做某事并不是一个好主意。正如我们在Android生命周期中看到的那样,它可能会停止: enter image description here

我会将您的后台代码放入服务中。只要活动AB暂停或恢复,此服务就会收到通知。在那里,您可以添加一些必须通过的超时,直到您开始逻辑。

如果你这样做,那就会发生:

案例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();
}