当我要关闭任务中的所有活动时,此代码有什么问题?

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之类的意图标志来清除除最新活动以外的所有活动的历史记录列表,这也许就是您要尝试的操作?

10-08 17:39