0

假设我有一个具有 singleTask 启动模式的启动器活动 A。现在想象 A 像这样启动 Activity 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 似乎没有被破坏。我想知道这是正确的还是我做错了什么?

4

2 回答 2

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属性设置。

更多 ->任务和返回堆栈

于 2015-02-14T12:43:26.400 回答
0

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

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

希望这可以帮助。

于 2018-04-03T07:28:35.923 回答