我正在尝试安排警报,它将在每小时后执行一些任务。出于测试目的,我将警报设置为每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
)
}
CCD_ 1仅被调用一次。有人能告诉我我犯了什么错误吗?
问候,
我能够解决这个问题。AlarmManager
的所有方法都需要精确的时间。在我的场景中,我使用可变时间作为第二个和第三个参数triggerTimeMillis
,即System.currentTimeMillis() + 5000
。因此,设置重复警报的正确方法是:
val initialTime = System.currentTimeMillis()
val repeatingInterval = initialTime + 5000
alarmMgr?.setInexactRepeating(AlarmManager.RTC_WAKEUP, initialTime, repeatingInterval,alarmIntent)
这是在每个重复间隔之后触发的。希望这能有所帮助。