0

以下のコードを使用して午前 8 時にアラームを開始し、1 分ごとに繰り返します。このアラームが午後 12 時に繰り返されるのを止めたいです。私はこのようにアラームを開始しています:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent loggerIntent1 = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0);
Calendar timeOff9 = Calendar.getInstance();
timeOff9.set(Calendar.HOUR_OF_DAY, 08);
timeOff9.set(Calendar.MINUTE, 00);
timeOff9.set(Calendar.SECOND, 00);


long duration = interval * 60 * 1000;
manager.setRepeating(AlarmManager.RTC_WAKEUP,timeOff9.getTimeInMillis(), duration, loggerIntent1);

次のコードで停止します。

Calendar timeOff = Calendar.getInstance();
timeOff.set(Calendar.HOUR_OF_DAY,12);
timeOff.set(Calendar.MINUTE,00);
timeOff.set(Calendar.SECOND, 00);

manager.set(AlarmManager.RTC_WAKEUP,timeOff.getTimeInMillis(), loggerIntent1);
manager.cancel(loggerIntent1);
loggerIntent1.cancel(); 

しかし、停止するためのコードにより、アプリが間違った方法で動作します。最初のアラームの直後にアラームを停止するコードを書いています。それは問題ですか?別のアラームを書く必要がありますか。ガイドしてください。

4

1 に答える 1

0

たぶん、あなたが試すことができる別のロジックがありますか?

これを想像して、すべてのインテントをトリガーするコードの最初の部分を続けます duration

ただし、AlarmReceiver.class 内では、現在の時刻をチェックするクラスになり、時刻が午後 12 時を超えると AlarmManager.cancel() が実行されます。

于 2013-05-11T08:56:36.143 に答える