Когда вы начинаете программировать на таком языке, как C ++ или Java, первое, чему вас учат, - это основной метод, точка, которую операционная система будет вызывать при запуске нашего приложения.
В Android нет основного метода как такового, но есть несколько методов нашей активности, которые будут вызываться SSOO при их возникновении. важные события. В этой главе мы подробно изучим, что это за события и как они работают. полный цикл деятельности Android. Официальная документация предлагает обширное объяснение этой темы, здесь мы изучим наиболее важные элементы вместе с некоторыми типичными ошибками при их обработке.
Жизненный цикл Android проходит по такой схеме:
События жизненного цикла
- onCreate (пакет)
- Представляет момент, когда деятельность создана. Этот метод обычно генерируется мастером при создании нового действия на Android, и именно здесь мы создаем все, что потребуется для этого действия. Если мы ранее сохранили данные активности в объекте Bundle, мы можем использовать их для его регенерации. Обычно мы не используем его.
- onStart ()
- Мероприятие будет продолжено быть на экране, хотя и не обязательно видимым. Если мы приходим с остановки, сначала мы пройдем через onRestart ().
- onRestart ()
- До onStart (), когда мы переходим из вызова onStop ().
- onResume ()
- Мероприятие начнется отвечать на взаимодействие пользователь.
- onPause ()
- Мероприятие будет перестань отвечать взаимодействию с пользователем.
- onStop ()
- Деятельность полностью перешла на задний план.
- onDestroy ()
- деятельность он будет уничтожен и ваши ресурсы высвобождаются.
Когда нам нужно реализовать один из этих методов, мы добавим его к нашей деятельности с помощью этих профилей:
открытый класс MyActivity расширяет активность {protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ...} защищенная пустота onStart () {super.onStart (); ...} защищенная пустота onRestart () {super.onRestart (); ...} защищенная пустота onResume () {super.onResume (); ...} protected void onPause () {... super.onPause (); } защищенная пустота onStop () {... onStop (); } защищенная пустота onDestroy () {... super.onDestroy (); }}
Важно поддерживать вызов метода суперкласса чтобы не встретить сюрпризов. Задачи каждого мероприятия, которые стоят выше нашей деятельности, должны быть сохранены. Этот вызов перейдет к началу событий ввода и к концу событий вывода. Таким образом мы избежим сюрпризов, поскольку элементы деятельности, которые нам нужны, но которые не будут находиться под нашим контролем, будут созданы перед их использованием и будут уничтожены впоследствии.
Нам не нужно добавлять все события, те, которые нам не нужны, будут использовать реализацию по умолчанию. Методы, которые мы будем часто использовать - и не рекомендуется трогать другие - это onCreate, onPause и onRestart.
Смысл onCreate ясен: это место, куда мы загружаем необходимые нам ресурсы, представления и все, что нам нужно. Для вывода единственный метод, на котором мы сосредоточимся, - это onPause. Причина, по которой мы избегаем onStop и onDestroy, заключается в том, что мы не можем их контролировать. onPause будет запускаться всякий раз, когда приложение выходит из переднего плана, в то время как два других будут запускаться операционной системой в зависимости от ваших потребностей. Их никогда не могут казнить! Это сделано, чтобы избежать затрат на создание действия снова и снова, если мы перейдем от действия к рабочему столу и наоборот, и операционная система будет освобождать используемые ресурсы только в том случае, если они ей нужны, и ей не нужно посещать все открытые процессы.
Это означает, что мы будем предполагать, что приложение умрет после выполнения onPause, и что оно наше. последний шанс сохранить данные которые нам нужно сохранить, и остановить сервисы, которые мы используем, такие как геолокация. Если мы остановили службы, подходящее место для их перезапуска - onRestart.
Остальные методы нам не нужно будет часто использовать. Обычно он нам может понадобиться, когда мы интегрируем сторонние библиотеки, такие как Facebook или Flurry. В этих случаях нас попросят сопоставить методы нашей деятельности с вашим кодом. Например, чтобы зарегистрировать сеанс Flurry, нам будет предложено запустить сеанс в методе onStart.
Несколько полезных идей
- Помните, для чего предназначено каждое мероприятие. Вам всегда понадобится onCreate, и довольно часто вам понадобятся onPause и onResume, чтобы остановить и перезапустить наиболее ресурсоемкие службы.
- Не трогай другие события если вам это явно не нужно.
- Не доверяйте onStop и onDestroy, они могут никогда не называться. Сохраните все необходимое в onPause.
- Избегайте использования статических переменных, не являющихся конечными. Приложение все еще может быть загружено, когда вы вернетесь, и они сохранят значения, которые они оставили. Если у вас нет другого выбора, кроме как использовать их, не забудьте сбросить их значения, когда вернетесь на передний план.
Больше информации - Базовое руководство по программированию на Android