Ответ
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. Не забудьте объявить сервис в манифесте.