Ответ
Service — компонент Android для выполнения длительных операций в фоне без пользовательского интерфейса.
Два основных типа:
-
Started Service (Запущенный сервис)
- Запускается вызовом
startService()из Activity или другого компонента. - Работает независимо от запустившего его компонента.
- Должен быть явно остановлен вызовом
stopSelf()илиstopService().
- Запускается вызовом
-
Bound Service (Связанный сервис)
- Создаёт клиент-серверное взаимодействие через
bindService(). - Работает, пока есть хотя бы один привязанный клиент.
- Все клиенты отвязываются — сервис уничтожается системой.
- Создаёт клиент-серверное взаимодействие через
Пример объявления простого Started Service:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Выполнение фоновой задачи
return START_STICKY; // Поведение при убийстве системой
}
@Override
public IBinder onBind(Intent intent) {
return null; // Для Bound Service нужно вернуть реализацию IBinder
}
}
Важные современные альтернативы и ограничения:
IntentServiceустарел. Для фоновых задач используйтеWorkManager(гарантированное выполнение) илиJobScheduler(для API 21+).- Начиная с Android 8 (API 26), введены строгие ограничения на фоновые сервисы. Приложение в фоне должно использовать
startForegroundService()и показывать постоянное уведомление. - Сервис обязательно должен быть объявлен в
AndroidManifest.xml.