0

以下几行有什么区别

(一种)

cal.add(Calendar.MILLISECOND, 0);

(乙)

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);
4

1 回答 1

1

根据文档

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

如果你这样做

cal.add(Calendar.MILLISECOND, 1);

Calendar 的实例将在毫秒字段中增加1. 如果日历有212毫秒,则此方法调用将导致它为213毫秒。

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

如果你这样做

cal.set(Calendar.MILLISECOND, 0);

而且日历有212毫秒,这将导致它是0毫秒。

一种方法相加,另一种方法

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

如果你使用 just AlarmManager#set(),它不会重复,所以你不必在执行取消任何东西。

如果您使用AlarmManager#setRepeating(),那么您将不得不取消。

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

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

于 2013-03-14T15:28:13.237 回答