2011-05-23 76 views
1

有没有办法在应用程序之外创建某种弹出式窗口,例如警报对话框?这个问题的背景是我需要在推送通知的情况下向用户显示某些内容。基本上,用户会收到一些消息,即使应用程序当前未打开,应用程序也会收到该消息,并且用户的任务栏中会显示通知。如果用户在任务栏中打开通知,我希望弹出窗口完全独立于应用程序。应用程序之外的警报对话框(不在活动中)

唯一的解决办法,我发现到目前为止是调用与Theme.Dialog设置创建一个警告对话框的活动。这个解决方案的问题是,如果应用程序已经打开,Activity将被添加到Activity Stack中。所以我得到了不一致的行为,因为如果应用程序已关闭,那么弹出窗口将按我的意愿工作,并将显示在用户当前所在的任何应用程序中。但是,如果应用程序已打开但尚未处于焦点状态,那么焦点将切换到我的应用程序,然后显示对话框。

理想情况下,我想,如果他们选择弹出显示独立的应用程序,用一个按钮来将用户重定向到应用程序,或者干脆关闭通知,并继续不管他们正在做的。

任何人有任何想法?

回答

5

不,你不能。但是你可以用launchMode发挥,使其在任务中唯一的活动:

http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html

的“singleTask”和“singleInstance”模式也各不相同只在一个方面:一个“singleTask “活动允许其他活动成为其任务的一部分。它始终是其任务的根源,但其他活动(必然是“标准”活动和“单一活动”)可以启动到该任务中。另一方面,“单一实例”活动不允许其他活动成为其任务的一部分。这是该任务中唯一的活动。如果它启动另一个活动,那么该活动将分配给其他任务 - 就好像FLAG_ACTIVITY_NEW_TASK在意图中一样。

+1

谢谢,终于得到了这个工作。我的警报活动被配置为一个Theme.Dialog,并使用launchMode =“singleInstance”。我不确定为什么其他launchModes不起作用,因为只要我在意图上设置了FLAG_ACTIVITY_NEW_TASK,它就应该可以在任何模式下工作,但事实并非如此。 – mnemy 2011-05-24 21:52:32

相关问题