Закрытие всех действий в задании - PullRequest
1 голос
/ 13 июля 2011

Что не так с этим кодом, когда я хочу закрыть все действия в задаче?

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;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 13 июля 2011
1 голос
/ 13 июля 2011

Способ работы 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, чтобы очистить список истории всего, кроме самого нового действия, что, возможно, вы пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...