Так что в основном я использовал AlarmManager для установки повторяющегося будильника на каждый день в определенное время. Я использовал setExactAndAllowWhileIdle и проверил текущие тревоги, используя adb shell dumpsys alarm. Аварийные сигналы выглядят так, как будто они срабатывают вовремя, но цель никогда ничего не делает, и журналы никогда не показываются.
Намерение прекрасно работает, только когда я нахожусь в приложении, но как только я go выходит из него, IntentService не работает, но сигнал тревоги все еще срабатывает (согласно adb). Я что-то пропустил? Должен ли я использовать BroadcastReceiver для запуска службы intentservice, если я хочу, чтобы она работала, даже если я не использую приложение? Вот используемый код:
Настраиваемый диспетчер аварийных сообщений:
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.set(Calendar.HOUR_OF_DAY, 16)
calendar.set(Calendar.MINUTE, 37)
val usageIntent = Intent(context, UsageService::class.java)
usageIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
val alarmIntent = PendingIntent.getService(context, 0, usageIntent, 0)
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
alarmIntent
)
Запущенная служба IntentService:
override fun onHandleIntent(p0: Intent?) {
Log.d("TestUsage", "Test")
}