Закрытие нескольких операций Android одновременно - PullRequest
7 голосов
/ 17 марта 2010

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

Нам нужна кнопка для каждого действия, которая вернет вас обратно в главное меню - т.е. выгрузит все действия из стека, кроме первого.

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

(Если это возможно, было бы хорошо, если бы представление могло определить, сколько действий нужно закрыть само по себе - то есть определить, насколько глубоко в стеке находится его собственная активность.)

Ответы [ 2 ]

16 голосов
/ 17 марта 2010

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

Из документации:

Если установлено, и активность запущен уже работает в текущая задача, то вместо запуск нового экземпляра этого деятельность, все другие виды деятельности поверх этого будет закрыт, и это Намерение будет доставлено (сейчас сверху) старая деятельность как новый Намерение.

Например, рассмотрим задачу состоящий из действий: A, B, C, D. Если D вызывает startActivity () с Намерение, которое разрешается к компоненту активности B, тогда C и D будут закончил и Б получил данный Намерение, в результате чего в стеке сейчас существо: A, B.

Текущий запущенный экземпляр активность B в приведенном выше примере будет либо получите новое намерение вы начиная здесь в своем onNewIntent () метод, или будь сам закончен и перезапущен с новым намерением. Если оно объявил режим запуска «несколько» (по умолчанию), и у вас есть не установлен FLAG_ACTIVITY_SINGLE_TOP в то же самое намерение, тогда это будет закончено и воссоздано; для всех остальных режимы запуска или если FLAG_ACTIVITY_SINGLE_TOP устанавливается тогда это намерение будет доставлено onNewIntent () текущего экземпляра.

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

0 голосов
/ 17 марта 2010

Вы можете объявить это первое действие android:launchMode="singleTask" ( more ), а затем просто запустить его с намерением.

РЕДАКТИРОВАТЬ: мое предложение основано на предположении, что вы хотите иметь один экземпляр действия, чтобы вернуться к. В противном случае это неверно.

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