如何使用后台活动的相同实例?

时间:2011-12-12 06:18:28

标签: android android-activity

我的情况如下: - 有三种活动A,B,C。

1 即可。 A的启动模式是'singleTask',而C的启动模式是清单中的'singleTop'。 A呼叫B然后B呼叫C.

2 即可。现在C是应用程序堆栈中最顶级的活动。

第3 即可。现在,通过设备主页键将活动C置于后台。

4 即可。我有一个服务运行,每发送15分钟发送广播。

5 即可。在广播接收机中,我有一个像这样的意图

Intent i = new Intent(context, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

现在,活动'A'出现在前景中,在其onResume()中我将活动'C'称为ACTIVITY_RESET_TASK_IF_NEEDED(有一些标志告诉我,活动'C'被调用alreday,所以让我们把它带到前台。如果那样flag设置为false然后它将永远不会直接调用Activity'C'而是调用Activity'B'然后'B'将调用 活动'C')。

我试图在这里实现的是用户认为当Activity'C'运行时,Activity'C'应该在前台。

以下是问题: - 由于FLAG_ACTIVITY_NEW_TASK,我从未获得相同的Actvity'C'实例,因此我的应用程序处于奇怪的状态。但是当我的应用程序使用设备返回键放到后台并且我除了所有这些步骤它工作,即我得到相同的Activity'C'实例(不知道android如何在内部处理它,但在两个流程回家和后退键没有一致性。)

那么如果按下主页键,我如何实现或维持我的app状态..?

帮助感谢。

1 个答案:

答案 0 :(得分:0)

您可以在启动flags

时使用Activity
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

此标记确保只允许Activity的一个实例(如果已经运行)然后从stack开始,如果它未运行,则会创建一个新的Activity