val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
Log.e("TAG", "$hour : ${minute+1}: ", )
val intent:Intent = Intent(this,MyReceiver::class.java)
intent.putExtra("ALARM_TITLE","DRINK")
intent.putExtra("ALARM_TIME","$hour : ${minute+1}")
val calendar: Calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.set(Calendar.HOUR_OF_DAY,hour)
calendar.set(Calendar.MINUTE,minute+1)
calendar.set(Calendar.SECOND,0)
val pendingIntent:PendingIntent = PendingIntent.getBroadcast(
this,
0,
intent,
PendingIntent.FLAG_MUTABLE
)
alarmManager.setRepeating(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
AlarmManager.INTERVAL_DAY,
pendingIntent,
)
当我使用setExact()时,我在指定的确切时间收到了通知。然而,当我切换到 setRepeating() 时,通知延迟了 10 分钟,例如,当我将闹钟设置为晚上 10:01 时,通知在晚上 10:11 到达。
请注意,我要求每天重复闹钟作为提醒。
来自 setRepeating()
的
文档:
注意:从 API 19 开始,所有重复警报都是不准确的。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,并如上所述重新安排每次时间。 targetSdkVersion 早于 API 19 的旧应用程序将继续将所有警报(包括重复警报)视为准确警报。
简而言之,自 Android KitKat 以来,您无法设置精确的重复闹钟。调用
setRepeating()
与调用 setInexactRepeating()
具有相同的效果。
但是,您还有其他选择。正如文档中所建议的,您可以设置一个一次性的精确警报,当您希望它第一次响起时,当它触发时,您可以使用相同的时间值再次设置它。