我使用活动2 与android:theme="@android:style/Theme.Translucent.NoTitleBar
作为对话,从服务开始与startIntent()
对话。启动应用后,会显示标记为<action android:name="android.intent.action.MAIN"/>
的活动1 ,并且服务正在启动。
当用户通过单击主页按钮离开应用程序时(活动-1 保留在堆栈中)并且服务<显示活动-2 / strong>,活动-1 在对话框的背景中可见。
有没有办法启动对话框活动忽略堆栈上的其他活动?
答案 0 :(得分:1)
您需要将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
,默认情况下,同一个套餐中的活动将具有相同的&#39; taskAffinity as 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()的intent包含FLAG_ACTIVITY_NEW_TASK
标志,则系统会查找另一个任务以容纳新活动。通常,这是一项新任务。但是,它并非必须如此。如果已经存在与新活动具有相同亲缘关系的现有任务,则该活动将启动到该任务中。 If not, it begins a new task
。