Я изучал, как планировать устройства наведения тревоги Oreo +.
Мой текущий подход использует AlarmManager
, услугу Ringtone и широковещательный приемник. Я получил сигнал тревоги, чтобы позвонить и отобразить уведомление, но уведомление и сигнал тревоги не срабатывают для устройств Oreo +.
Я узнал, что использование JobIntentService
является хорошей практикой из-за Doze
и других фоновых ограничений. В настоящее время при использовании JobIntentService
я получаю сообщение об ошибке:
java.lang.RuntimeException: произошла ошибка при выполнении doInBackground ()
Я делаю это неправильно? Мне действительно нужно реализовать AsyncTask
?
class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val alarmStatus: String = intent!!.getStringExtra("alarmStatus")
val serviceIntent = Intent(context, RingtoneService::class.java)
serviceIntent.putExtra("alarmStatus", alarmStatus)
//context!!.startService(serviceIntent)
RingtoneService.enqueueWork(context, serviceIntent)
}
}
class RingtoneService : JobIntentService() {
// Enqueing work to do in this service.
companion object {
val SERVICE_JOB_ID = 1
fun enqueueWork(context: Context?, work: Intent) {
if (context != null) {
enqueueWork(context, RingtoneService::class.java, RingtoneService.SERVICE_JOB_ID, work)
}
}
}
override fun onHandleWork(intent: Intent) {
onHandleIntent(intent)
}
private fun onHandleIntent(intent: Intent) {
//handling of notification goes here
}
}