Что такое 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 завершает свою работу и освобождает ресурсы.
Получается, что onCreate() идёт первым в цепочке при запуске Activity, а onDestroy() – последним. Не всегда разработчику нужно переопределять все эти методы, далеко нет. Чаще всего работают только с onCreate(). Иногда я помимо onCreate() использовала также onPause() и onResume() для внутриигровой музыки, чтобы знать, когда её запускать и приостанавливать. Ведь не хочется, чтобы пользователь запустил приложение, заиграла фоновая музыка, а затем он свернул приложение, но музыка осталась (когда приложение в свёрнутом состоянии, onDestroy() ещё не наступает) (только если другие приложения с приоритетом побольше нуждаются в оперативной памяти).
Создание Activity
Чтобы создать новую Activity в своём приложении, нужно создать новый класс, который наследуется от Activity или его подклассов, таких как AppCompatActivity для поддержки более старых версий Android.
1 2 3 |
public class MyActivity extends AppCompatActivity { // ... } |
В средах разработки вроде IntelliJ IDEA можно создавать Activity ещё проще, с помощью соответствующего контекстного меню. В нём можно выбирать, какого плана Activity нужно создать. Есть различные шаблоны вроде галереи, авторизации, Activity в полный экран или окна настроек. Лично я всегда выбираю пустую Activity, чтобы самостоятельно её потом настраивать – полностью так, как мне нужно.
Если создавать Activity по упрощённой схеме, то задав всего несколько параметров для новой Activity, вы получите от IDE подарок: она вместо вас создаст и файл для кода Activity.java, и xml-файл макета интерфейса activity.xml. Более того, среда разработки сама внесёт изменения в файл AndroidManifest.xml, описывающий базовые параметры всех 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, то для её запуска нужно написать следующий код:
1 2 |
Intent intent = new Intent(this, MyOtherActivity.class); startActivity(intent); |
После создания Intent-а, который указывает на класс нужной для запуска Activity, остаётся запустить её методом startActivity(). Этот метод вам не нужно писать самостоятельно: он уже существует в классе AppCompatActivity, от которого наследуется ваша Activity.
Впоследствии вы сможете прямо из кода Activity обращаться к графическим компонентам интерфейса приложения.
Контекст Activity
Контекст (Context) – это важное понятие в разработке Android-приложений, представляющее собой информацию о текущем состоянии и окружении приложения. Он предоставляет доступ к ресурсам приложения, таким как макеты (layouts), изображения, строки, цвета и другие ресурсы. Можно получить доступ к этим ресурсам, используя методы, предоставляемые контекстом.
1 2 3 4 5 |
// Получение строки из ресурсов String appName = context.getString(R.string.app_name); // Получение изображения из ресурсов Drawable icon = context.getDrawable(R.drawable.app_icon); |
Контекст позволяет запускать различные компоненты Android, такие как Activity или Service, с помощью Intent-ов.
1 2 3 |
// Пример запуска новой Activity с использованием контекста Intent intent = new Intent(context, MyActivity.class); context.startActivity(intent); |
Также контекст может предоставить информацию о приложении, такую как пакетное имя (package name) и версия.
1 2 3 4 |
String packageName = context.getPackageName(); PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0); int versionCode = packageInfo.versionCode; String versionName = packageInfo.versionName; |
Контекст следует использовать осторожно, чтобы избежать утечек памяти. Например, не рекомендуется сохранять контекст в статических переменных, так как это может привести к утечкам памяти.
Контекст может быть разных типов, таких как Activity, Service, Application, и т. д. Каждый из них имеет свои особенности, поэтому важно понимать, в каком контексте вы работаете.
Что ж, Activity и их контексты играют важную роль в разработке Android-приложений. Они как дрожжи в хлебе и как колёса в машине. Activity представляют собой основной способ взаимодействия пользователя с приложением. Изучение их жизненного цикла и основных концепций стоит свеч.
Уведомление: Как добавить музыку и звуки в приложение Android