0

好的,这是我的情况。

我有活动 A、B、C、D。它们按 A -> C -> D 的顺序相互启动。B 可以与 A 互换(B -> C -> D 的组合同样可能)。我还有一个等待一个事件和另一个活动 E 的服务。当事件发生时,预期的行为取决于哪个活动在前台:

  • 当 A 或 B 可见或应用程序根本不在前台时,堆栈上的活动顺序不应更改。
  • 当 C 可见时,我想删除 C 并将 E 放在它的位置:分别为 A -> E 或 B -> E。
  • 当 D 可见时,我想同时删除 C 和 D 并将 E 放在它们的位置:A -> E 或 B -> E。

欢迎使用更通用的解决方案(处理 A -> C1 -> C2 -> ... 更改为 A -> E 之类的情况),因为该应用程序将在未来扩展并且将添加新功能(它们的确切的形状尚未确定)。

我已经阅读了 Android 开发人员网站上的Tasks and Back Stacks文档以及有关该主题的几个 SO 线程,但找不到一个好的解决方案。

有任何想法吗?

4

1 回答 1

0

您可以子类化Application并添加一些方法,例如:

public static MyApplication getInstance() // returns a reference to the application
public void setForegroundActivity(Activity);
public Activity getForegroundActivity(); //

然后在您的活动onResume()方法 callsetForegroundActivity(this)onPause()call中setForegroundActivity(null)

当您的异步事件被调用时,您可以检查返回的活动getForegroundActivity()并确定它是哪一个。如何确定它是哪个活动取决于您(例如,您可以检查实例的类型)。

于 2013-06-26T22:52:42.880 回答