2011-11-04 84 views
7

如果活动A与任务T1相关,并且活动B与任务T2相关,那么我如何从活动B完成活动A?如何完成其​​他活动的活动

我需要这个,因为我的应用程序可以从其快捷方式或通过通知开始。

+0

这两个活动是同一个应用程序的一部分吗? – FoamyGuy

+0

是的。活动a正常开始,活动B在应用程序处于后台通知时启动 –

+0

我想说使用[服务](http://developer.android.com/guide/topics/fundamentals/services.html),虽然没有看太多,但它可能对你有用。 – user999717

回答

0

我不知道什么是最好的方法,但一个方法可以是活动一传一单和的B获取它,做它一结束()...

+0

看到我上面的评论 –

+0

你可以删除从onStop或类似的参考... – Warpzit

3

虽然其他方法可能有效,对我来说最直接的方法是向其他活动发送一个意图告诉它完成自己。该活动在收到该意图后调用finish()。

+0

如果我这样做,我会去这样的事情。 – FoamyGuy

+0

在应用程序中保留活动引用并不好,因为操作系统在引用时不会终止该活动。 –

+0

这是不同的。比我的建议,但这只会工作,如果从意图开始的活动是运行活动相同,而不是一个新的。当你用意图调用它时,我不知道它是如何工作的,所以如果不进行测试就不能回答。希望这是有道理的... – Warpzit

1

另一种替代方法是使用通知处理程序中的清除顶部标记来调用活动B,例如

Intent intent = new Intent(context, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
context.startActivity(intent); 

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

如果设置,以及正在启动的活动在目前的任务已经运行,然后,而不是推出该活动的一个新的实例,都在它上面的其他活动会关闭,这个意图将作为新的意图传递给(现在在最上面的)旧活动。

+0

它只清除该任务的所有活动,不影响其他任务的活动 –

2

我需要相同的信息,并玩弄什么亚尔在这里说我想出了这个。

Intent intent = new Intent(MainActivity.this,HighScoresActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

更改活动以符合您的需求,但FLAG_ACTIVITY_CLEAR_TOP从堆栈中删除其他活动。