Activity в Android

Что такое Activity в Android? Это одна из ключевых составляющих в Android-разработке. Activity представляют собой экранные компоненты, которые позволяют пользователям взаимодействовать с приложением. Их можно сравнить с формами на компьютере. Каждая Activity обычно соответствует одному экрану пользовательского интерфейса или фрагменту функциональности.

Я считаю, что Activity не переводится на русский язык, и поэтому даже не пытаюсь привести какой-нибудь аналог здесь. Активность? Ну нет. Активность – это когда код не целый день пишешь, а вышел немного на турнички позаниматься.

Жизненный цикл Activity

Activity имеют свой жизненный цикл в ОС Android. Жизненный цикл состоит из разных состояний, таких как create, start, resume, pause, stop, destroy. При переходе в каждое из этих состояний вызывается соответствующий метод у Activity: onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy().

  • onCreate() вызывается при создании Activity. Здесь обычно выполняется инициализация, настройка пользовательского интерфейса и другие подготовительные действия.
    * * *
  • onStart() – Activity видна, но не обязательно в фокусе.
    * * *
  • onResume() – Activity находится в фокусе и готова к взаимодействию с пользователем.
    * * *
  • onPause() – Activity теряет фокус, но остается видимой. Здесь обычно выполняются операции, которые должны быть завершены до перехода в другое состояние.
    * * *
  • onStop() – Activity больше не видна пользователю.
    * * *
  • onDestroy() – Activity завершает свою работу и освобождает ресурсы.
Схема жизненного цикла Android Activity с описанием состояний и методов событий

Получается, что onCreate() идёт первым в цепочке при запуске Activity, а onDestroy() – последним. Не всегда разработчику нужно переопределять все эти методы, далеко нет. Чаще всего работают только с onCreate(). Иногда я помимо onCreate() использовала также onPause() и onResume() для внутриигровой музыки, чтобы знать, когда её запускать и приостанавливать. Ведь не хочется, чтобы пользователь запустил приложение, заиграла фоновая музыка, а затем он свернул приложение, но музыка осталась (когда приложение в свёрнутом состоянии, onDestroy() ещё не наступает) (только если другие приложения с приоритетом побольше нуждаются в оперативной памяти).

Создание Activity

Чтобы создать новую Activity в своём приложении, нужно создать новый класс, который наследуется от Activity или его подклассов, таких как AppCompatActivity для поддержки более старых версий Android.

Скриншот с созданием новой Android Activity в IntelliJ IDEA

В средах разработки вроде IntelliJ IDEA можно создавать Activity ещё проще, с помощью соответствующего контекстного меню. В нём можно выбирать, какого плана Activity нужно создать. Есть различные шаблоны вроде галереи, авторизации, Activity в полный экран или окна настроек. Лично я всегда выбираю пустую Activity, чтобы самостоятельно её потом настраивать – полностью так, как мне нужно.

Если создавать Activity по упрощённой схеме, то задав всего несколько параметров для новой Activity, вы получите от IDE подарок: она вместо вас создаст и файл для кода Activity.java, и xml-файл макета интерфейса activity.xml. Более того, среда разработки сама внесёт изменения в файл AndroidManifest.xml, описывающий базовые параметры всех Activity.

Скриншот диалогового окна создания новой Android Activity
Скриншот кода на Java созданной Android Activity

Запуск Activity из другой Activity

Activity могут взаимодействовать друг с другом с помощью Intent-ов. Intent — это объект-сообщение, которое указывает системе, что нужно сделать (например, открыть новую Activity, открыть данный URL, позвонить на данный номер телефона, сделать фотографию и т.д.). Intent помогает взаимодействовать между разными частями приложения.

Поэтому можно использовать Intent-ы для запуска других Activity. Для этого нужно создать новый объект Intent, передав ему два параметра: контекст выполнения (объект Context) и класс той Activity, которую вы хотите запустить.

Объект текущей Activity подходит для первого параметра, так как класс AppCompatActivity, от которой наследуется ваша Activity, сам наследуется от класса Context. Поэтому в первый параметр можно смело передавать this, так как этот код мы запускаем из метода внутри Activity.

Второй параметр конструктора Intent-а – это класс той Activity, которую вы хотите запустить. В Java тип класса можно передать, указав название класса и через точку написав слово “class“. Например, если класс другой Activity, которую вы хотите запустить, называется MyOtherActivity, то для её запуска нужно написать следующий код:

После создания Intent-а, который указывает на класс нужной для запуска Activity, остаётся запустить её методом startActivity(). Этот метод вам не нужно писать самостоятельно: он уже существует в классе AppCompatActivity, от которого наследуется ваша Activity.

Впоследствии вы сможете прямо из кода Activity обращаться к графическим компонентам интерфейса приложения.

Контекст Activity

Контекст (Context) – это важное понятие в разработке Android-приложений, представляющее собой информацию о текущем состоянии и окружении приложения. Он предоставляет доступ к ресурсам приложения, таким как макеты (layouts), изображения, строки, цвета и другие ресурсы. Можно получить доступ к этим ресурсам, используя методы, предоставляемые контекстом.

Контекст позволяет запускать различные компоненты Android, такие как Activity или Service, с помощью Intent-ов.

Также контекст может предоставить информацию о приложении, такую как пакетное имя (package name) и версия.

Контекст следует использовать осторожно, чтобы избежать утечек памяти. Например, не рекомендуется сохранять контекст в статических переменных, так как это может привести к утечкам памяти.

Контекст может быть разных типов, таких как Activity, Service, Application, и т. д. Каждый из них имеет свои особенности, поэтому важно понимать, в каком контексте вы работаете.

Что ж, Activity и их контексты играют важную роль в разработке Android-приложений. Они как дрожжи в хлебе и как колёса в машине. Activity представляют собой основной способ взаимодействия пользователя с приложением. Изучение их жизненного цикла и основных концепций стоит свеч.

Добавить комментарий