fix(android): do not cancel PendingIntent before setAlarmClock on reschedule
Remove existingPendingIntent.cancel() in the "cancel existing alarm before rescheduling" block. The cached PendingIntent can be the same instance passed to setAlarmClock; cancelling it can prevent the new alarm from firing. Keep only alarmManager.cancel(existingPendingIntent) to clear the previous alarm.
This commit is contained in:
@@ -321,7 +321,8 @@ class NotifyReceiver : BroadcastReceiver() {
|
|||||||
if (existingPendingIntent != null) {
|
if (existingPendingIntent != null) {
|
||||||
Log.w(SCHEDULE_TAG, "Cancelling existing alarm before rescheduling: requestCode=$requestCode, scheduleId=$stableScheduleId, source=$source")
|
Log.w(SCHEDULE_TAG, "Cancelling existing alarm before rescheduling: requestCode=$requestCode, scheduleId=$stableScheduleId, source=$source")
|
||||||
alarmManager.cancel(existingPendingIntent)
|
alarmManager.cancel(existingPendingIntent)
|
||||||
existingPendingIntent.cancel()
|
// Do not call existingPendingIntent.cancel(): the cached PendingIntent may be the same
|
||||||
|
// object we pass to setAlarmClock below; cancelling it can prevent the new alarm from firing.
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.w(SCHEDULE_TAG, "Failed to cancel existing alarm before scheduling: $stableScheduleId", e)
|
Log.w(SCHEDULE_TAG, "Failed to cancel existing alarm before scheduling: $stableScheduleId", e)
|
||||||
|
|||||||
Reference in New Issue
Block a user