假设我有一个具有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没有被摧毁。我想知道这是对的还是我错了?
答案 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之上无需清除。
希望这有帮助。