Найти следующую активность в onStop () при вызове startActivity - PullRequest
4 голосов
/ 18 февраля 2012

как я могу выяснить, какое Activity будет следующим в методе onStop () текущего Activity после того, как onStop () будет вызван при запуске нового Activity с startActivity ()?

Моя единственная идея на данный момент: Объявив намерение, которое я использую как глобальную переменную, и проверив его в методе onStop () с помощью intent.getClass () или чего-то подобного. Это было бы хорошо? Как-то похоже на быстрый и грязный подход.

Спасибо за любую помощь!

Edit: Итак, вот сценарий:

Activity1 - это просмотр списка, в котором пользователь выбирает одну или несколько строк, а затем нажимает «отправить», теперь все выбранные строки передаются на сервер в фоновом режиме.

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

Таким образом, если пользователь выбирает одну или несколько строк и затем выходит из Activity1 без «отправки», я хочу, чтобы выборка была отброшена, поэтому я вызываю метод для очистки этого массива в методе onStop () Activity1. Это хорошо работает, но, конечно, есть разные способы покинуть Activity1. Например, у меня есть контекстное меню с 3 записями, и каждая из них запускает другое действие.

Теперь мне нужно сохранить значения моего массива на случай, если выбрано только одно специальное действие (скажем, Activity2) из ​​контекстного меню.

Извините, если это неясно, но я говорю не об экземплярах активности, а о виде деятельности в целом.

Итак, все, что мне нужно знать в методе onStop (), это если мы переключились на Activity2.java или Activity3.java из Activity1.

Может быть, что onStop () Activity1 даже не подходящее место для моего ясного или неясного решения?

Еще раз спасибо

1 Ответ

1 голос
/ 19 февраля 2012

Возможно, вы захотите добавить некоторые пояснения о вашем намерении, поскольку вопрос немного расплывчат.

По умолчанию, когда запускается Acitvity, он помещается в очередь, называемую задним стеком.Когда действие заканчивается, оно удаляется, а предыдущее действие переносится на передний план.

Будьте осторожны при запуске нового действия, если вы не настроите его должным образом, вы создадите новый экземпляр этого действия.Активность, даже если она уже существует в заднем стеке.Если я понимаю ваш вопрос, вы будете искать:

Intent intent = new Intent(getContext(), NewClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Это очистит стек за исключением упомянутой активности и выведет его на передний план, если он существует в заднем стеке.

Этот поток SO показывает, как очистить стек ( Руководство по Android ).

Посмотрите здесь , который описывает, какуправлять задачами и действиями, но Google предостерегает от манипулирования поведением по умолчанию.

...