当我想关闭任务中的所有活动时,此代码有什么问题?
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;
}
}
}
答案 0 :(得分:1)
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这样的意图标志来清除除最新活动之外的所有活动的历史记录列表,这可能就是您要做的事情?
答案 1 :(得分:1)