我使用一个活动-2和android:theme="@android:style/Theme.Translucent.NoTitleBar
作为对话框,从服务和startIntent()
开始。当应用程序启动时,活动-1标记为<action android:name="android.intent.action.MAIN"/>
,服务正在启动。
当用户通过单击home按钮离开应用程序时(Activity-1留在堆栈中),Activity-2由服务显示,Activity 1在对话框的背景中可见。
是否有一种方法可以启动对话框Activity而忽略堆栈上的其他活动?
发布于 2014-05-07 11:26:05
您需要将Activity-2
作为一个新任务启动。
从Activity-2
启动service
时,请执行以下操作
Intent intent = new Intent(this,Activity2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent)
另外,确保Activity-1
和Activity-2
有不同的task Affinity
,默认情况下,同一个包中的活动将具有相同的‘taskAffinityas its package name. You can set a differnt 'taskAffinity' for
Actiivty-2’,以便在不同的任务中启动它。
参见这里的http://developer.android.com/guide/components/tasks-and-back-stack.html,亲和力在两种情况下起作用:
当启动活动的意图包含FLAG_ACTIVITY_NEW_TASK
标志时。默认情况下,一个新活动被启动到名为startActivity()的活动的任务中。打电话的是pushed onto the same back stack
。但是,如果传递给startActivity()的意图包含FLAG_ACTIVITY_NEW_TASK
标志,系统将寻找一个不同的任务来容纳新的活动。通常,这是一项新任务。然而,这不一定是必要的。如果已经有一个与新活动具有相同亲缘关系的现有任务,则该活动将被启动到该任务中。If not, it begins a new task
。
https://stackoverflow.com/questions/23516050
复制相似问题