Уничтожение стека активности - PullRequest
1 голос
/ 03 февраля 2011

Я создаю приложение, которое требует, чтобы пользователь вошел в систему и получил идентификатор пользователя.Этот идентификатор является переменной-членом моего расширенного класса Application.

Я бы хотел, чтобы приложение распознало, когда / если эта переменная была уничтожена, и, если это так, вырвало мой экран входа в систему и уничтожил стек Activity.за этим.

Вот что я собираюсь сделать:

Расширить Activity и ListActivity (в настоящее время я использую только два типа Activity).В обработчике onResume () проверьте, установлен ли идентификатор пользователя.Если нет, откройте экран входа в систему и уничтожьте оставшуюся часть стека действий за ним.Все мои действия будут происходить из этих новых расширенных действий.

Моя проблема здесь в том, что я не знаю, как уничтожить стек действий за определенным действием.Есть идеи?

Одна из идей состоит в том, чтобы прослушивание в широковещательном режиме прослушивало конкретное сообщение, в котором говорится, что «Деятельности» убивают себя, но я надеюсь, что в Android уже есть что-то для такой ситуации.

Обновление:

Кроме того, есть ли способ очистить весь стек Activity?Я хотел бы переопределить обработчик onBackPressed () в Activity и сделать так, чтобы стек Activity был удален, чтобы пользователь вернулся на домашний экран Android.

Ответы [ 2 ]

7 голосов
/ 03 февраля 2011

Другим вариантом будет использование параметра noHistory в AndroidManifest.xml для достижения этой цели. поэтому ваша активность не должна быть помещена в стек истории

<activity android:name=".MyActivity"
          android:noHistory="true" />
3 голосов
/ 03 февраля 2011

Я согласен с danh32: установка FLAG_ACTIVITY_CLEAR_TOP для намерения вынести активность входа на вершину стека уничтожит все действия, стоящие за новым действием (следовательно, действие входа в систему).Это оставит одно действие в стеке.

Intent myIntent = new Intent(view.getContext(), DisplayMenu.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
finish();

Я использую эту опцию, чтобы позволить пользователям вернуться к главному экрану с длинного пути через множество действий.

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