Android: обработка стека активности - PullRequest
1 голос
/ 20 января 2010

У меня есть следующее:

Деятельность A, B, C, D. A и D могут быть доступны в любое время и в любом месте из приложения.

B и C достигаются так:

A -> B -> C

У меня есть следующий вариант использования:

Пользователь ввел C (A -> B -> C), затем он перешел к D.

Когда она хочет перейти на A, я хочу перевести ее в уже запущенную очередь из A - другими словами, я хочу, чтобы она пошла в запущенную C.

Примерно так A -> B -> C -> D -> (same) C. Но я не хочу терять D из стека активности. После этого, когда она нажимает кнопку «назад», она снова переводится на D.

Это возможно и правильно сделать? Какова лучшая практика?

Если я недостаточно четко объяснил свою ситуацию, не стесняйтесь задавать вопросы.
10x заранее,
Danail

1 Ответ

3 голосов
/ 20 января 2010

К сожалению, вы не можете сделать это. Документация гласит следующее :

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

По сути, вы не можете иметь один и тот же экземпляр Activity C в двух местах в стеке одновременно.

Тем не менее, вы можете создать впечатление, что это так, заставив Activity C сохранить свое переходное состояние в Application объекте для вашего приложения. Это позволило бы всем экземплярам Activity C совместно использовать состояние и, таким образом, выглядеть так, как если бы они были одним и тем же экземпляром.

Вам необходимо создать свой собственный подкласс Application, а затем прочитать и записать его из упражнения C в onResume() и onPause().

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