Каждая деятельность является отдельным окном.
Например, приложение может содержать деятельность, отображающую список телефонных контактов пользователя, и деятельность, отображающую подробную информацию о контакте. Несмотря на то, что описание деятельностей разнесено по отдельным независимым классам, вместе они формируют единый пользовательский интерфейс.
Каждый класс, описывающий деятельность, наследуется от базового класса Activity и должен описывать его абстрактные методы, такие как:
- • onCreate()
Вызывается при запуске деятельности. В данном методе необходимо осуществлять инициализацию элементов интерфейса, содержимого списков и т.п;
• onRestart()
Вызывается перед методом onStart(), если деятельность восстанавливается из состояния Stopped;
• onStart()
Вызывается, когда деятельность становится видимой для пользователя;
• onResume()
Вызывается, когда деятельность отображается пользователю и находится на переднем плане;
• onPause()
Вызывается при подготовке системы к отображению другой деятельности. При разработке используется для сохранения информации, введенной пользователем, остановки анимаций и других событий, которые могут потреблять ресурсы ЦП и т.п;
• onStop()
Вызывается в случае, если деятельность больше не отображается пользователю;
• onDestroy()
Вызывается при окончательном завершении работы деятельности.
Перечисленные выше методы описывают жизненный цикл деятельности и вызываются при изменении состояния отображаемого окна. Для каждого метода разработчик должен описывать соответствующие действия приложения, такие как инициализация или освобождение ресурсов, сохранение информации, введенной пользователем, для последующего ее использования и т.п.
На рис. 4.1 изображен «нормальный» жизненный цикл деятельности.
Рис. 4.1. Типовой жизненный цикл деятельности
Как видно из рисунка, после запуска деятельности осуществляется последовательный вызов методов onCreate(), onStart(), onResume(), после чего деятельность оказывается на переднем плане и пользователь может взаимодействовать с отображаемым деятельностью содержимым.
Далее в случае «нормального» жизненного цикла при окончании работы с деятельностью посылается запрос на ее завершение (на рисунке finish() – вызов метода завершения работы деятельности из нее самой).
При этом осуществляется последовательный вызов методов onPause(), onStop(), onDestroy() и переход к предыдущей деятельности.
Жизненный цикл деятельности может изменяться в зависимости от условий. Например, при завершении в случае нехватки памяти, могут быть не вызваны методы onStop(), onDestroy().