一旦调用警报,是否必须取消警报?

时间:2013-03-14 15:13:58

标签: android alarmmanager android-calendar

以下行之间有什么区别

(A)

cal.add(Calendar.MILLISECOND, 0);

(B)

cal.set(Calendar.MILLISECOND, 0);

一旦调用/触发警报,取消Alarm有多重要?如果我们不取消会怎么样?

代码

Intent intent = new Intent(this, AlarmReceiver.class);

PendingIntent sender = PendingIntent.getBroadcast(this, i,
                        intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Get the AlarmManager service
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                am.set(AlarmManager.RTC_WAKEUP, triggerInMills, sender);

1 个答案:

答案 0 :(得分:1)

根据documentation

Calendar#add()将指定的金额添加到指定的字段。

如果你这样做

cal.add(Calendar.MILLISECOND, 1);

日历的实例将在1的毫秒字段中获得增加。如果日历的时间为212毫秒,则此方法调用将使其为213毫秒。

Calendar#set()将字段设置为您想要的字段。

如果你这样做

cal.set(Calendar.MILLISECOND, 0);

日历的时间为212毫秒,这会导致0毫秒。

一种方法添加,其他设置

  

一旦调用/触发警报,取消警报有多重要?如果我们不取消会怎么样?

如果您只使用AlarmManager#set(),则不会重复,因此您无需在执行后取消任何

如果您使用AlarmManager#setRepeating(),则必须取消。

如果您取消,它会不断重复,就像文档和名称所暗示的一样。

所有警报将在关机/重启时被删除,需要重新创建。