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

0

 

Мы нагляднее представим вам жизненный цикл компонента Activity, запустив специально созданную программу и изучив, как работают методы жизненного цикла Activity в виде LogCat программы Eclipse. Следующий код – это листинг подкласса Activity. В этом подклассе реализованы методы жизненного цикла, а в каждом методе присутствуют вызовы регистрации. Выноски в коде аннотируют подробное описание обработки жизненного цикла – это описание начинается в пункте «Методы жизненного цикла класса Activity» далее. Рассмотрим этот листинг и изучим, какая информация будет регистрироваться:

Когда вы готовы запустить приложение, сначала отобразите вид LogCat, выполнив команду Window ► Show View ► Other (Окно ► Отобразить вид ► Прочие), и откройте каталог Android в диалоговом окне Show View (Отобразить вид). Затем выберите LogCat (рис. 11.1).

Теперь запустите приложение в эмуляторе или на физическом устройстве. Поскольку пример построен с применением интерфейсов Fragment API и Android API версии 11, соответствующих версии операционной системы Android 3.0 Honeycomb, а также с применением класса Fragment из пакета Android для обеспечения совместимости, вы можете запускать пример при помощи любой из этих баз кода.

В виде LogCat в программе Eclipse начнет появляться регистрационная информация. Чтобы отобразить только ту регистрационную информацию, которая относится к коду, приведенному в предыдущем листинге, общий объем информации можно отфильтровать. Нажмите зеленый символ «+» на панели инструментов в окне регистрации. Откроется диалоговое окно для определения фильтра регистрационной информации (рис. 11.2).

Рис. 11.1. Выбор LogCat из показанного списка

Рис. 11.2. Создание фильтра, который позволяет отобразить только те данные из журнала регистрации, которые отмечены как RnchLifecycle

В данном случае мы собираемся отфильтровать журнал регистрации на основании метки, которой мы воспользовались в классе FinchLifecycle. Эта метка называется так же, как и класс: FinchLifecyclе. Фильтр мы назовем actіvity-lіfecycle (жизненный цикл активности), как показано на рис. 11.2.

Теперь при запуске программы вы увидите только ту регистрационную информацию, которая относится к методам жизненного цикла активности. Эта информация будет содержаться на вкладке activity-1ifecyclе в виде LogCat. Если вы хотите видеть всю регистрационную информацию, то на вкладке Log (Журнал) будет отображаться журнал без фильтрации.

Если запустить программу в эмуляторе Android 3.0, вы увидите примерно то же, что и на рис. 11.3.

Рис. 11.3. Код примера, запущенный в эмуляторе Android 3.0

Первое, что вы увидите на вкладке activity-lifecycle в виде LogCat, – несколько сообщений из журнала регистрации (рис. 11.4).

Рис. 11.4. Информация из регистрационного журнала, где показаны новый процесс и восстановленное состояние активности

Чтобы сгенерировать интересную нам регистрационную информацию, можно запустить несколько приложений, пару раз перейти из одного в другое, пользуясь для возврата в приложение Finch переключателем приложений или инструментом Launcher. После того как вы запустите достаточно много приложений и вернетесь обратно в Finch, вы увидите, что идентификатор процесса (PID) изменился, но само приложение, как кажется, осталось в том же состоянии, в каком вы его покинули. Это объясняется тем, что состояние данной активности, как и все остальные компоненты приложения, было восстановлено из сохраненного состояния. Регистрационная информация, приведенная на рис. 11.5, показывает именно такое изменение.

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

Рис. 11.5. Информация из регистрационного журнала, где показаны новый процесс и восстановленное состояние активности

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

По теме:

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