异步启动和完成活动

时间:2013-06-26 22:34:24

标签: android asynchronous android-activity back-stack

好的,这是我的理由。

我有活动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 - >即

欢迎使用更多通用解决方案(处理情况,如A - > C1 - > C2 - >; ......更改为A - > E),因为该应用程序将在未来进行扩展和新功能将被添加(他们的确切形状尚未确定)。

我已经在Android开发者网站上查看了Tasks and Back Stacks文档以及有关该主题的几个SO主题,但无法找到一个不错的解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你可以继承Application并添加一些方法,如:

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

然后在您的活动'onResume()方法中致电setForegroundActivity(this),并在onPause()致电setForegroundActivity(null)

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