fix(alarms): refresh next execution reliably
This commit is contained in:
@@ -47,7 +47,8 @@ class AlarmScheduler(private val context: Context) {
|
||||
)
|
||||
Log.d(tag, "alarm.schedule setAlarmClock OK id=$id")
|
||||
|
||||
if (preNoticeAtMillis > System.currentTimeMillis()) {
|
||||
val now = System.currentTimeMillis()
|
||||
if (preNoticeAtMillis > now) {
|
||||
try {
|
||||
alarmManager.setExactAndAllowWhileIdle(
|
||||
AlarmManager.RTC_WAKEUP,
|
||||
@@ -68,6 +69,15 @@ class AlarmScheduler(private val context: Context) {
|
||||
// The main alarm is already scheduled with setAlarmClock.
|
||||
Log.w(tag, "alarm.schedule preNotice SecurityException id=$id")
|
||||
}
|
||||
} else if (triggerAtMillis > now) {
|
||||
context.sendBroadcast(
|
||||
Intent(context, PluriWaveAlarmReceiver::class.java).apply {
|
||||
action = PluriWaveAlarmReceiver.ACTION_PRE_NOTICE
|
||||
putExtra(PluriWaveAlarmReceiver.EXTRA_ALARM_ID, id)
|
||||
putExtra(PluriWaveAlarmReceiver.EXTRA_ALARM_TITLE, title)
|
||||
}
|
||||
)
|
||||
Log.d(tag, "alarm.schedule preNotice immediate id=$id")
|
||||
} else {
|
||||
Log.d(tag, "alarm.schedule preNotice skipped id=$id")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user