class MyStartedService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
// Выполнение задачи (например, загрузка файла)
return START_STICKY
}
override fun onBind(intent: Intent): IBinder? = null
}
Характеристики:
startService()
stopSelf()
Типы возвращаемых значений:
START_STICKY
- перезапускается после убийства системыSTART_NOT_STICKY
- не перезапускается автоматическиSTART_REDELIVER_INTENT
- перезапускается с тем же Intentclass MyBoundService : Service() {
private val binder = LocalBinder()
inner class LocalBinder : Binder() {
fun getService(): MyBoundService = this@MyBoundService
}
override fun onBind(intent: Intent): IBinder = binder
}
Характеристики:
bindService()
val notification = NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Мой сервис")
.setSmallIcon(R.drawable.ic_notification)
.build()
startForeground(NOTIFICATION_ID, notification)
Характеристики:
FOREGROUND_SERVICE
Характеристики:
class MyIntentService : IntentService("MyIntentService") {
override fun onHandleIntent(intent: Intent?) {
// Обработка в фоновом потоке
}
}
Характеристики:
class MyJobIntentService : JobIntentService() {
override fun onHandleWork(intent: Intent) {
// Фоновая обработка
}
companion object {
fun enqueueWork(context: Context, work: Intent) {
enqueueWork(context, MyJobIntentService::class.java, JOB_ID, work)
}
}
}
Выбор типа зависит от: