【发布时间】:2011-12-12 06:18:28
【问题描述】:
我有这样一个场景:- 有 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);
现在 Activity 'A' 进入前台,在其 onResume() 中,我将 Activity 'C' 称为 ACTIVITY_RESET_TASK_IF_NEEDED(有一些标志告诉我 Activity 'C' 已被调用,所以让我们把它放在前台。如果flag 设置为 false 那么它永远不会直接调用 Activity 'C' 而是调用 Activity 'B' 然后调用 'B' 活动'C')。
我在这里试图实现的是用户的观点,即当 Activity 'C' 运行时,Activity 'C' 应该出现在前台。
这是现在的问题:- 由于 FLAG_ACTIVITY_NEW_TASK,我从来没有得到相同的 Activity 'C' 实例,因此我的应用程序进入了奇怪的状态。但是当我的应用程序使用设备后退键进入后台并且我执行所有这些步骤时它可以工作,即我得到相同的活动'C'实例(不知道android如何在内部处理它,但在两个流程中和返回键没有一致性)。
那么,如果 Home 键被按下,我该如何实现或保持我的应用程序状态..?
帮助表示赞赏。
【问题讨论】: