可以通过清除顶部清除具有单个任务标志的活动吗?

时间:2015-02-02 12:41:27

标签: android start-activity launchmode

假设我有一个具有singleTask启动模式的启动器活动A.现在假设A启动活动B就像;

        Intent intent = new Intent(this, B.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
            | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivityForResult(intent, REQ_ACCOUNT_ACTIVITY);

在这种情况下,似乎A没有被摧毁。我想知道这是对的还是我错了?

2 个答案:

答案 0 :(得分:0)

您可以使用AndroidMenifest文件

中的以下属性来实现此目的

android:finishOnTaskLaunch="true"

 <application
   ...
   >
    <activity
        android:finishOnTaskLaunch="true"
        android:launchMode="singleTask" 
        ...>
    </activity>
</application>

如果您不想在历史堆栈中保留新活动。使用下面一个_

FLAG_ACTIVITY_NO_HISTORY

//Actvity B is not in BackStack if we set FLAG_ACTIVITY_NO_HISTORY flag
 Intent intent = new Intent(this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivityForResult(intent, REQ_ACCOUNT_ACTIVITY);

用户离开活动B后,活动就会结束。这也可以使用noHistory属性进行设置。

了解更多 - &gt; Tasks and Back Stack

答案 1 :(得分:0)

已经有一段时间了,但是当我在这里闲逛时,我遇到了自己的问题。

活动A没有被删除,因为为活动B设置了标志。当我调用此代码时,在任务堆栈中已经没有名为B的活动了。如此有效,在B之上无需清除。

希望这有帮助。