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