Android Activity

  • 21 октября 2024
  • 56 просмотров
  • 0 комментариев

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

Основные аспекты Activity

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

Жизненный цикл активности описывает изменения её состояния в зависимости от взаимодействий пользователя или операционной системы. Жизненный цикл управляется системой Android, которая вызывает методы для перехода активности из одного состояния в другое. Основные методы жизненного цикла:

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

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

2. Intent и запуск Activity

Для того чтобы перейти от одной активности к другой, в Android используется механизм Intent. Это асинхронное сообщение, которое описывает действие, которое должно быть выполнено, и данные, необходимые для выполнения этого действия. Существует два основных типа Intent:

  • Явные Intent: используются для запуска конкретной активности внутри приложения.
  • Неявные Intent: используются для запуска действий, которые могут выполняться любыми приложениями, поддерживающими указанный тип действия (например, открытие веб-ссылки в браузере).

Пример запуска активности с явным Intent:

val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

3. Взаимодействие между Activity

Активности могут обмениваться данными. Для передачи данных между активностями используется объект Bundle, который прикрепляется к Intent. Пример:

val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("EXTRA_MESSAGE", "Hello, Second Activity!")
startActivity(intent)

Во второй активности данные можно получить следующим образом:

val message = intent.getStringExtra("EXTRA_MESSAGE")

4. Обратные вызовы Activity (startActivityForResult)

Часто возникает необходимость получить данные от другой активности. Для этого используется метод startActivityForResult(), который позволяет запустить активность с ожиданием результата. Например, если нужно получить изображение с камеры или выбрать файл из системы:

val intent = Intent(this, SecondActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)

После завершения активности вызывается метод onActivityResult(), в котором можно обработать полученные данные:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        val result = data?.getStringExtra("RESULT")
    }
}

5. Обработка конфигурационных изменений

Когда происходят изменения конфигурации (например, смена ориентации экрана), активность может быть пересоздана системой. Чтобы сохранить данные при таких изменениях, используется метод onSaveInstanceState(), который позволяет сохранить состояние активности. Например:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("STATE_KEY", "Some data")
}

override fun onRestoreInstanceState(savedInstanceState: Bundle) {
    super.onRestoreInstanceState(savedInstanceState)
    val savedData = savedInstanceState.getString("STATE_KEY")
}

6. Навигация и Back Stack

Android использует концепцию Back Stack для управления переходами между активностями. Каждая активность, запущенная пользователем, добавляется в стек, и пользователь может вернуться к предыдущей активности с помощью кнопки "Назад". Важно понимать, как управлять стеком для правильной организации навигации, особенно в сложных приложениях.

Для управления стеком можно использовать флаги, такие как FLAG_ACTIVITY_CLEAR_TOP, которые определяют, как именно активность должна быть добавлена в стек или удалена из него.

7. Фрагменты в Activity

Хотя Activity является самостоятельной единицей, для более гибкого управления интерфейсом можно использовать фрагменты. Фрагмент – это подмножество активности, которое имеет собственный жизненный цикл и может быть добавлено или удалено динамически.

Использование фрагментов позволяет разделять интерфейс на более мелкие компоненты и переиспользовать их, что особенно полезно на устройствах с большим экраном или при создании многоэкранных интерфейсов.

8. Манифест и Activity

Каждая активность должна быть объявлена в манифесте Android-приложения (файл AndroidManifest.xml). В этом файле указываются важные параметры, такие как:

  • name: класс активности.
  • launchMode: определяет режим запуска активности (например, singleTop, singleTask).
  • intent-filter: задает действия и типы данных, которые активность может обрабатывать.

Пример декларации активности:

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

9. Ресурсы и темы

Активности можно назначить отдельные темы и стили, чтобы они визуально отличались друг от друга. Например, можно задать тему с определёнными цветами, шрифтами и анимациями в файле styles.xml, а затем применить её к активности в манифесте:

<activity android:name=".MainActivity" android:theme="@style/MyCustomTheme" />

Заключение

Activity – это фундаментальный компонент Android-приложений, через который происходит взаимодействие с пользователем. Понимание жизненного цикла, правильное управление состоянием и использование механизмов навигации помогут разработчикам создавать эффективные и устойчивые приложения.

Посмотреть подходящие вакансии для Android-разработчика можно тут!

    Оставьте отзыв
    (минимум 60 знаков)
    Оценка5/5
    Нужно авторизоваться