0

我正在处理的应用程序的流程存在一些问题。基本上,我有一个服务,它总是持有一个通知,按下通知应该返回到应用程序的最新活动,而不重新打开它(意味着它将恢复)。此外,在特定活动(可能还有其他活动)上,我需要单击后退按钮会退出应用程序(和服务),因此下次最终用户通过启动器或长按主页按钮启动它时,它将回到第一个活动。

简而言之,要求是:

  • 服务通知单击 -> 恢复当前活动,不创建新活动。
  • 返回单击特定活动-> 完全关闭应用程序(清除所有应用程序的堆栈)。

因此,例如,如果我有调用活动 B 的活动 A(这是特殊活动):如果最终用户单击主页,然后通过通知返回到应用程序(或通过启动器/长按主页按钮启动) ,它将返回到他离开它的活动 B 的确切状态。此外,如果最终用户在活动 B 上按下了后退按钮,则应用程序将关闭(并且服务和通知将消失),下次他打开应用程序(无论如何),他将返回活动 A 。

我尝试在活动 B 上使用“singleInstance”,但它总是会回到活动 B,因为它在自己的任务中,无论我使用哪个标志(我已经尝试过 FLAG_ACTIVITY_REORDER_TO_FRONT 和其他一些标志)。如果不使用它,通知将打开一个新的活动 B 实例。

有人可以帮忙吗?

4

3 回答 3

1

jelly bean (android 4.1) 现在为这个确切的问题引入了一个新的 API:

http://www.youtube.com/watch?feature=player_embedded&v=Yc8YrVc47TI#t=830s

但是,我不确定我是否了解如何使用它以及它是如何工作的。它是否有可能重新创建整个活动堆栈?这不是很成问题吗,因为它们可能包含以前不存在的数据(因为它们已刷新)?

这听起来也有问题,因为这意味着我需要监视所有操作以便稍后恢复它们。

于 2012-06-30T10:42:19.443 回答
1

另一种方法是将通知的意图设置为启动一个新的虚假活动,该活动将在创建后立即关闭。意图也将具有“FLAG_ACTIVITY_NEW_TASK”标志。

希望这种方法对每个人都有效。太糟糕了,这个解决方案似乎更像是一种解决方法,而不是真正的解决方案。

另一种选择是这个链接: Change notification intent in Android

于 2012-05-14T11:52:05.037 回答
0

好的,尽管这不是完全正确的答案,但就我而言,我对活动 B 使用了“singleTop”,并选择在移动到活动 B 时关闭活动 A。

于 2012-04-11T13:57:03.780 回答