Главная » Разработка для Android » ЖИЗНЕННЫЙ ЦИКЛ ФРАГМЕНТА – программирование Android

0

 

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

В данном тривиальном приложении-примере потеря состояния не так важна. А вот настоящее приложение не должно терять состояния. Пользователь будет страшно раздражаться, если, например, при переводе телефона в альбомный режим во время просмотра какой-либо веб-страницы браузер будет возвращаться на домашнюю страницу.

Чтобы приложение сохраняло состояние, в код нужно внести всего два небольших изменения. Во-первых, в жизненном цикле фрагмента DateTime необходимо переопределить метод onSavelnstanceState таким образом, чтобы он сохранял свое состояние. Во-вторых, следует изменить метод onCreate так, чтобы он восстанавливал сохраненное состояние. Как и при работе с активностями, фреймворк Android предоставляет для первого метода объект Bundl е, когда работа фрагмента приостанавливается. Такой же объект (Bundl е) предоставляется методу onCreate при реконструировании клона приостановленного фрагмента.

Чтобы добавить поддержку состояния, изменим два следующих метода:

И все. Если пропустить такую версию программы через весь жизненный цикл, ее состояние больше теряться не будет. Кстати отметим, что, поскольку переменная time (и вообще любое состояние фрагмента) инициализируется в методе onCreate, ее нельзя объявить как final. Таким образом, снижается польза от применения конструктора при задании состояния фрагмента. К тому же так соблюдается рекомендация, в соответствии с которой подклассы Fragment вообще не должны иметь явных конструкторов.

В документации по разработке для Android описан полный жизненный цикл фрагмента. Но один из методов обратного вызова этого жизненного цикла, onPause, заслуживает особого внимания. Метод onPause важен во фрагменте по той же причине, по которой он важен и в активности. Чтобы приложение хорошо вписывалось в рабочую среду Android, оно не должно ничего делать (использовать процессор, расходовать заряд батареи), пока это приложение является невидимым. Среда Android предусматривает вызов метода onPause, относящегося к фрагменту, всякий раз, когда этот фрагмент является невидимым. В этом методе фрагмент должен высвобождать все ресурсы, которые он, возможно, удерживает, завершать все долговременные процессы, которые мог начать, и т. д.

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

По теме:

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