IntentService не работает в фоновом режиме при запуске с AlarmManager? - PullRequest
0 голосов
/ 18 февраля 2020

Так что в основном я использовал 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")
}
...