要解决AlarmManager无法取消的问题,您可以尝试以下方法:
Intent intent = new Intent(context, YourAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// 设置AlarmManager
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimeInMillis, intervalInMillis, pendingIntent);
// 取消AlarmManager
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
Intent intent = new Intent(context, YourAlarmReceiver.class);
int requestCode = 123; // 使用唯一的requestCode
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);
// 设置AlarmManager
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimeInMillis, intervalInMillis, pendingIntent);
// 取消AlarmManager
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
Intent intent = new Intent(context, YourAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// 设置AlarmManager
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimeInMillis, intervalInMillis, pendingIntent);
// 创建一个新的PendingIntent
Intent cancelIntent = new Intent(context, YourAlarmReceiver.class);
PendingIntent cancelPendingIntent = PendingIntent.getBroadcast(context, 0, cancelIntent, 0);
// 取消AlarmManager
alarmManager.cancel(cancelPendingIntent);
cancelPendingIntent.cancel();
请注意,当使用PendingIntent取消AlarmManager时,确保使用相同的上下文(context)和Intent来设置和取消AlarmManager。