Поддержание активности - PullRequest
1 голос
/ 27 марта 2012

В моем приложении есть ряд действий, которые начинаются с «A», а затем «B», «C», «D» и «E». Деятельность «A», «B», «C» и «D» являются прозрачными действиями (прозрачная тема), а «E» непрозрачна.

Требование о том, что Задание «А» не должно быть завершено. Я прочитал в блоге http://www.skill -guru.com / blog / 2011/01/13 / android-активность-жизненный цикл / , в котором говорится, что

  1. Если деятельность потеряла фокус, но все еще видна (то есть новая не полноразмерная или прозрачная деятельность сосредоточена на ваших активность), приостановлено.
  2. Если действие полностью скрыто другим действием, оно остановился.

OnStop () действия «A» не вызывается до тех пор, пока пользователь не перейдет к действию «D», однако он вызывается при вызове действия «E».

Есть ли в любом случае, что мы можем поддерживать действие "А" в стеке действий? Является ли хорошим решением сохранить статическую ссылку Activity в объекте Application, чтобы среда не убивала его? Какие меры предосторожности я могу предпринять, чтобы "А" не был убит? Есть ли способ, которым я могу получить уведомление, если это будет убито фреймворком, чтобы я мог воссоздать его?

1 Ответ

4 голосов
/ 27 марта 2012

Требование заключается в том, что действие "A" не должно быть завершено.

Операция завершается с помощью вызова finish().Обычно это происходит, когда пользователь нажимает кнопку НАЗАД.

OnStop () действия «A» не вызывается, пока пользователь не переходит к действию «D», однако вызывается, когда действие «Е»вызывается.

Правильно.

Есть ли в любом случае, что мы можем поддерживать действие "А" в стеке действий?

Он «работает» в стеке активности (для любого разумного определения «работает») до тех пор, пока вы не вызовете finish(), пользователь не нажмет BACK или процесс не будет завершен.onStop() не влияет на это.

Является ли хорошим решением сохранить статическую ссылку на Activity в объекте Application, чтобы среда не убивала его?

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

Какие меры предосторожности я могу предпринять, чтобы "A" не был убит?

Не звоните finish().

Есть ли способ, которым я могу получить уведомление, если это будет убито фреймворком, чтобы я мог восстановить его?

Ваша деятельность будет вызываться с onDestroy(), если она закончена.Это может произойти или не произойти, если процесс завершается, в зависимости от того, что вызвало завершение, и состояния системы в это время.

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