用作对话框的活动会从堆栈中显示未关闭的活动

时间:2014-05-07 11:03:27

标签: android android-intent android-activity

我使用活动2 android:theme="@android:style/Theme.Translucent.NoTitleBar作为对话,从服务开始与startIntent()对话。启动应用后,会显示标记为<action android:name="android.intent.action.MAIN"/>活动1 ,并且服务正在启动。

当用户通过单击主页按钮离开应用程序时(活动-1 保留在堆栈中)并且服务<显示活动-2 / strong>,活动-1 在对话框的背景中可见。

有没有办法启动对话框活动忽略堆栈上的其他活动?

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-1Activity-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