Фоновая работа приложения

Моя задача: изменять значение в виджете каждые 24 часа. Проблема: фоновый сервис работает только когда приложение не закрыто. А мне нужно, чтобы сервис работал вне зависимости от этого. Заранее: в манифест я все добавил

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    initCreate()
    initFuncs()
}

private fun initCreate() {
    APP_ACTIVITY = this
    Paper.init(this)
    checkData()
}

private fun initFuncs() {
    startBtn.setOnClickListener {
        writeData()
        startBroadcast()
    }
    stopBtn.setOnClickListener {
        deleteData()
    }
}

private fun startBroadcast() {
    val intent = Intent(this, MyService::class.java)
    val pendingIntent =
        PendingIntent.getService(applicationContext, 1, intent, PendingIntent.FLAG_IMMUTABLE)
    val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
    alarmManager.setInexactRepeating(
        AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis(),
        AlarmManager.INTERVAL_FIFTEEN_MINUTES,
        pendingIntent
    )
    Toast.makeText(this, "Alarm will ring after every 15 minutes interval", Toast.LENGTH_LONG)
        .show()
}

MyService.kt

class MyService : Service() {

override fun onCreate() {
    super.onCreate()
    updateWidgetData("update!")
}

private fun updateWidgetData(text: String) {
    val context: Context = this
    val appWidgetManager = AppWidgetManager.getInstance(context)
    val remoteViews = RemoteViews(context.packageName, R.layout.my_widget)
    val thisWidget = ComponentName(context, MyWidget::class.java)
    remoteViews.setTextViewText(R.id.appwidgetText, text)
    appWidgetManager.updateAppWidget(thisWidget, remoteViews)
}

override fun onBind(intent: Intent?): IBinder? {
    // TODO: Return the communication channel to the service.
    throw UnsupportedOperationException("Not yet implemented")
}

}


Ответы (0 шт):