我正在处理我正在处理的应用程序流程中的一些问题。 基本上,我有一个始终保持通知的服务,按下通知应返回应用程序的最新活动,而不重新打开它(意味着它将恢复)。 此外,在特定活动(以及其他人)上,我需要点击后退按钮退出应用程序(和服务),以便下次最终用户通过启动器启动它或长按主页按钮,它将回到第一个活动。
简而言之,要求是:
所以,例如,如果我有活动A,它调用活动B(这是特殊活动): 如果最终用户点击了主页,然后通过通知返回到应用程序(或通过启动器/长按主页按钮启动),它将返回到他离开的活动B的确切状态。 此外,如果最终用户按下活动B上的后退按钮,应用程序将关闭(服务和通知将消失),下次他打开应用程序时(无论如何),他将返回活动A.
我试图在活动B上使用“singleInstance”,但随后它将总是回到活动B,因为它在自己的任务中,无论我使用哪个标志(我尝试过FLAG_ACTIVITY_REORDER_TO_FRONT和其他一些标志)。 如果不使用它,通知将打开活动B的新实例。
有人可以帮忙吗?
答案 0 :(得分:1)
另一种方法是设置通知的意图,以启动一个新的虚假活动,该活动将在创建后立即关闭。 意图也将有" FLAG_ACTIVITY_NEW_TASK"国旗。
希望这种方法适用于所有人。 太糟糕了,这个解决方案似乎更像是一种解决方法,而不是真正的解决方案。
另一种选择是这个链接: Change notification intent in Android
答案 1 :(得分:1)
jelly bean(android 4.1)现在为这个确切的问题引入了一个新的API:
http://www.youtube.com/watch?feature=player_embedded&v=Yc8YrVc47TI#t=830s
但是,我不确定我是否理解如何使用它以及它是如何工作的。是否有可能重新创建整个活动堆栈?是不是很有问题,因为它们可能包含以前没有的数据(因为它们被刷新)?
这听起来也有问题,因为这意味着我需要监控所有操作,以便以后恢复它们。
答案 2 :(得分:0)
好吧,即使它不是答案,对于我的情况,我已经将“singleTop”用于活动B,并选择在转移到活动B时关闭活动A.