Приведи пример использования Service

«Приведи пример использования Service» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

class MyService : Service() {
    private val binder = LocalBinder()

    override fun onBind(intent: Intent): IBinder {
        return binder
    }

    inner class LocalBinder : Binder() {
        fun getService(): MyService = this@MyService
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // Выполняем фоновую работу
        return START_STICKY
    }
}

// Запуск сервиса из Activity
val serviceIntent = Intent(this, MyService::class.java)
startService(serviceIntent) // Для started service
// или
bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE) // Для bound service

Сервис работает в главном потоке, для долгих операций нужно использовать IntentService или WorkManager. START_STICKY перезапускает сервис после убийства системы. Для связи с Activity используется Binder. Не забудьте объявить сервис в манифесте.