当我要关闭任务中的所有活动时,此代码有什么问题?
public static void closeAllBelowActivities(Activity current)
{
boolean flag = true;
Activity below = current.getParent();
if (below == null)
return;
System.out.println("Below Parent: " + below.getClass());
while (flag) {
Activity temp = below;
try {
below = temp.getParent();
temp.finish();
} catch (Exception e) {
flag = false;
}
}
}
最佳答案
android的工作方式是活动生活在堆栈中(您可能知道),因此如果A调用B调用C调用D
堆栈看起来像
// D - Current
// C
// B
// A
如果您只是想确保C,B,A不在堆栈中,则应在调用下一个活动之前调用finish()
A.startActivity(B)
A.finsh()
---
B.startActivity(C)
B.finish()
依此类推,所以我想我的下一个问题是,为什么您要通过当前活动而不是通过调用活动(设计方式)来做到这一点?
您还可以使用FLAG_ACTIVITY_CLEAR_TOP之类的意图标志来清除除最新活动以外的所有活动的历史记录列表,这也许就是您要尝试的操作?