0

我希望我的应用程序每天早上 9 点开始。为此,我每天早上 9 点开始使用 Alarm_1 setRepeatingAlarm()

manager.setRepeating(AlarmManager.RTC_WAKEUP,
    timeOn.getTimeInMillis(), 86400000,startingIntent);

从 alarm_1 开始,我启动了另一个警报 MainAlarm,它以 1 分钟的间隔重复启动我的服务。

manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
    SystemClock.elapsedRealtime(), duration, MainActivity.mainIntent);

我希望我的应用程序每天晚上 9 点停止。

为此,我每天晚上 9 点使用 MainAlarmsetRepeatingAlarm()启动Alarm_2。cancel()

但这并没有按预期工作。

应该做什么?有什么问题,因为我使用 3 个警报吗?

第二天闹钟不响了。

     This is my cancel() code:
          public class AlarmReceiver2 extends BroadcastReceiver {
          @Override
          public void onReceive(Context context, Intent intent) {
         AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
         manager.cancel(MainActivity.mainIntent);
      MainActivity.mainIntent.cancel();
          }
        }   
4

1 回答 1

0

首先,我不认为有 3 个警报有问题。

其次,也许您可​​以添加用于尝试取消的代码。这里的一个技巧是您需要PendingIntent与您用来启动警报的那个相同 - 这就是为什么查看取消代码很有用。


看看我对相关问题的回答:


这个问题非常相似,我觉得我不应该复制整个答案,但这里有一个链接到@commonsware 答案的摘要:


以下答案复制自如何取消此重复警报?

cancel()使用与您使用的等效的 PendingIntent调用AlarmManager setRepeating()

Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,
               0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.cancel(sender);
于 2013-05-17T12:28:32.777 回答