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します。Calendar に212ミリ秒がある場合、このメソッドを呼び出すとミリ秒になり213ます。

Calendar#set()フィールドを必要なものに設定します。

もしあなたがそうするなら

cal.set(Calendar.MILLISECOND, 0);

また、カレンダーには212ミリ秒があります。これにより、ミリ秒になり0ます。

1 つのメソッドは を追加し、他のメソッドは を設定します

アラームが起動/起動されたら、アラームをキャンセルすることはどれほど重要ですか? キャンセルしないとどうなりますか?

just を使えばAlarmManager#set()繰り返さないので、実行にキャンセルする必要はありません。

ご利用AlarmManager#setRepeating()の場合はキャンセルとなります。

キャンセルしないと、ドキュメントと名前が示すように、繰り返されます。

すべてのアラームはシャットダウン/再起動時に消去されるため、再作成する必要があります。

于 2013-03-14T15:28:13.237 に答える