AlarmManager setInexactRepeating не вызывается повторно - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь запланировать тревогу, которая будет выполнять какую-то задачу через каждый час. Для целей тестирования я установил срабатывание будильника через каждые 5 секунд, но он срабатывает только один раз.

private fun register30MinSchedule() {
        val alarmMgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager
        val alarmIntent = Intent(this, AlarmReceiver::class.java).let { intent ->
            PendingIntent.getBroadcast(applicationContext, LocationTrack_Service_ID, intent, 0)
        }

        alarmMgr?.setInexactRepeating(
                AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis(),
                System.currentTimeMillis() + 5000 ,
                alarmIntent
        )
    }

AlarmReceiver вызывается только один раз. Кто-нибудь может указать мне ошибку, которую я делаю?

С уважением,

1 Ответ

0 голосов
/ 20 февраля 2020

Мне удалось выяснить проблему. Все методы AlarmManager требуют точного времени. В моем сценарии я использовал переменное время для 2-го и 3-го параметра triggerTimeMillis, то есть System.currentTimeMillis() + 5000. Итак, правильный способ установки повторяющейся тревоги:

val initialTime = System.currentTimeMillis()
val repeatingInterval = initialTime + 5000

alarmMgr?.setInexactRepeating(AlarmManager.RTC_WAKEUP, initialTime, repeatingInterval,alarmIntent)

Это триггер после каждого повторяющегося интервала. Надеюсь, это поможет.

...