您好我的应用程序有3个活动,其中一个是对话框。我已经通过在AndroidManifest.xml
中使用此代码完成了此操作android:theme="@android:style/Theme.Dialog"
应用程序还有一个服务,即使应用程序不可见也可以打开对话框,但是当它执行此操作时,它还会在后台打开其他活动之一。有没有办法阻止这种情况发生,因此它会在当前活动前打开对话框(即使活动来自不同的应用程序)?
谢谢, ng93
答案 0 :(得分:3)
我通过添加:
解决了这个问题android:taskAffinity=".MyDialog"
到AndroidManifest.xml中的对话框。然后它与您的其他任务无关,并且可以在不显示暂停活动的情况下显示。
答案 1 :(得分:1)
您无法在其他应用程序的活动前显示某些内容。 “在前面”有些含糊不清,所以我要澄清一下,你的应用程序不能同时与另一个应用程序共享屏幕。
我理解它的方式,Android的设计固有地要求当你在屏幕上做某事时,你的应用程序的进程/任务处于前台并且处于焦点,从而使该任务的其他活动成为焦点。这意味着当您的应用程序处于焦点时,其他应用程序不会以UI焦点运行。
这意味着,例如,当您的应用启动活动时,它会将您应用的一系列活动置于焦点,并将新活动(在本例中为您的对话框)置于应用堆栈的顶部。结果是,如果在显示对话框时点击“返回”,您将返回之前显示的活动。如果堆栈已清除之前的活动,“返回”将带您进入之前在屏幕上显示的应用程序。
有清除堆栈的方法,例如:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
根据您的方案,您可能希望清除堆栈,或者在用户关闭对话框时“退出”应用程序。此外,对话框活动可以覆盖onBackPressed,这样,如果用户点击“返回”,活动会“退出”您的应用,将用户返回到对话前的状态。
进一步阅读活动和筹码:http://developer.android.com/guide/topics/fundamentals.html#acttask
答案 2 :(得分:0)
我在打开对话框活动之前最终关闭了我的所有应用程序活动,这不是理想的,但似乎是在
之后获得功能的唯一方法