Главная » Разработка для Android » Второстепенные методы жизненного цикла класса Activity в Android приложении

0

 

В документации Android для описания жизненного цикла активности используется еще несколько методов (кроме основных методов жизненного цикла), которые также вызываются на разных этапах «жизненного пути» активности.

Метод onPostCreate вызывается после вызова метода onRestorelnstanceState. Он может быть полезен, если ваше приложение требует сохранять состояние в два этапа. Методу передается объект Bundle, содержащий состояние экземпляра.

Метод onPostResume вызывается после onResume, когда экземпляр Activity должен быть видим и должен взаимодействовать с пользователем.

Метод onUserLeaveHint вызывается перед тем, как активность должна перестать быть видимой и перестать взаимодействовать с пользователем из-за действий самого пользователя. Например, пользователь может нажать клавишу Back (Назад) или Ноте (Домой). Именно здесь удобно удалять уведомления и диалоговые окна.

В листинге программы, показанном на рис. 11.6, вы видите, что мы реализовали переопределения этих методов, чтобы зарегистрировать, когда они будут вызваны. Эти методы существуют Для таких случаев, когда, например, вам требуется дополнительный этап для восстановления состояния экземпляра.

Однако если вам по-настоящему нужно сохранить определенные данные на период, в течение которого несколько раз изменится конфигурация, и эти данные не входят в состояние, сохраняемое в модели данных, которая будет сохранена, и не входят в Bundle, то можно воспользоваться методом onRetainNonConfigurationlnstan се, чтобы «припрятать» ссылку на объект. Затем ссылка может быть запрошена новым экземпляром Activity при помощи метода getLastNonConfigurationlnstance:

Метод onRetainNonConfigurationlnstance вызывается после onStop. Это означает, что его вызов не гарантируется. А если он и вызван, то не гарантируется, что возвращенная ссылка будет сохранена и предоставлена последующему экземпляру Activity. Метод getl_astNonConfigurationInstance() может быть вызван в методе onCreate или позже, при восстановлении состояния активности.

Чтобы проиллюстрировать, как используются эти методы, вернемся к объекту, содержащему идентификатор задачи для активности, когда вызывается метод onR etainNonConfiguration Instance. А когда вызовется метод onRetai nNonConf і gurationlns tance(Bundle), мы убедимся, что идентификатор задачи не изменился. Таким образом, подтверждается, что, хотя экземпляр компонента или даже весь процесс является новым с точки зрения пользователя, задача осталась той же самой.

Рассказывая о практическом применении этих методов, чаще всего говорят о ситуации, когда требуется сохранять результаты в веб-запросе: нужно повторить запрос, но время задержки до попадания запроса на веб-сервер может достигать нескольких секунд. Итак, данные могут быть воссозданы, если система не может сохранить их до тех пор, как эту информацию получит новый экземпляр объекта Activity. Но гораздо разумнее было бы просто кэшировать данные.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии