Что такое компоненты Android?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
# Компоненты Android
Компоненты Android — это основные кирпичики, из которых строится любое приложение. Это строительные блоки, представляющие точки входа для взаимодействия пользователя с приложением и системой.
Четыре основных типа компонентов
1. Activity
Activity представляет один экран с пользовательским интерфейсом. Это одно окно, в котором приложение рисует UI.
Характеристики:
- Один экран = одна Activity
- Имеет собственный жизненный цикл (onCreate → onStart → onResume → onPause → onStop → onDestroy)
- Может запускать другие Activity или Service
- Может иметь Fragment'ы для модульного UI
Пример на Kotlin:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp()
}
}
override fun onResume() {
super.onResume()
// Activity стала видима пользователю
}
}
В Compose эра:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp() // Compose UI вместо XML layouts
}
}
}
2. Service
Service — это компонент для выполнения долгоживущих операций без UI. Может работать в фоне, даже если пользователь закрыл приложение.
Типы:
- Started Service — запущен явно через startService(), работает, пока не вызовут stopService() или сам себя не остановит
- Bound Service — клиенты подключаются через bindService(), может обслуживать несколько клиентов одновременно
Примеры использования:
- Воспроизведение музыки в фоне
- Загрузка/выгрузка файлов
- Синхронизация данных
- Позиционирование GPS
Пример:
class MusicService : Service() {
private var isPlaying = false
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(NOTIFICATION_ID, createNotification())
startPlayingMusic()
return START_STICKY // Перезапустить, если убито системой
}
override fun onDestroy() {
super.onDestroy()
stopPlayingMusic()
}
}
3. BroadcastReceiver
BroadcastReceiver получает системные или пользовательские рассылаемые сообщения (broadcast intents). Позволяет приложению реагировать на системные события.
Примеры системных broadcast'ов:
- ACTION_BOOT_COMPLETED — устройство загрузилось
- ACTION_POWER_CONNECTED — подключилось зарядное устройство
- ACTION_BATTERY_LOW — батарея низкая
Пример:
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
when (intent?.action) {
Intent.ACTION_BATTERY_LOW -> {
// Батарея низкая, нужно экономить
}
}
}
}
registerReceiver(
receiver,
IntentFilter(Intent.ACTION_BATTERY_LOW)
)
4. ContentProvider
ContentProvider управляет доступом к структурированному набору данных (файлы, БД). Предоставляет абстракцию поверх источника данных.
Используется для:
- Предоставления данных другим приложениям
- Безопасного управления доступом через permissions
- Стандартного URI-based интерфейса (content://...)
Взаимодействие между компонентами
Компоненты коммуницируют через Intent:
// Явный Intent — к конкретной Activity
val intent = Intent(context, DetailActivity::class.java).apply {
putExtra("item_id", 42)
}
startActivity(intent)
// Неявный Intent — система найдёт подходящее приложение
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://example.com"))
startActivity(intent)
Современный подход
В современном Android разработке:
- Compose Navigation заменяет явное управление Activity'ями
- WorkManager заменяет Service для фоновых операций
- Data Store часто заменяет собственные ContentProvider'ы
- Fragment'ы вместо Activity'ей для модульного UI