0

平日のオプションを持つ小さなアラーム プロジェクトを作成しています。(私はアラームマネージャーを使用しています)。

アラームは指定された日時に完全にトリガーされますが、問題は、指定されたアラーム時刻に日または時刻を変更すると、以前のアラームもトリガーされることです。

たとえば。

月曜日、水曜日、金曜日の午前 5 時にアラームが鳴るように設定されている場合。- そして、現在の時刻は日曜日の午後 6 時です。

月曜日、水曜日、金曜日の午後 4:00 に別のアラームが設定されています。現在の時刻は、日曜日の午後 6:30 です。

テストのために、日を火曜日の午後 6:00 に変更しました。すぐに、月曜日のスケジュールに対して 2 つのアラームが 1 つずつトリガーされます。

この特定のアラームを停止して、すぐにではなく次の月曜日にのみトリガーするにはどうすればよいですか? 日付も確認する必要がありますか?

お知らせ下さい!

4

2 に答える 2

0

あなたは本当にできません。アラーム マネージャは、すべてシステム時間に基づいています。システム時刻を手動で変更すると、今から設定した時刻までにすべての時間が経過したかのように動作します。

編集:在庫アラーム アプリケーションのソース コードを見つけることができます。これは、関連オブジェクト Alarms の 1 つへのリンクです

私はそれを確認するために何もテストしませんでしたが、イベントが発生するはずの時間を保存していると私が知る限り、それが過去のものであることが突然判明した場合、アラームをトリガーする代わりに無視します. チェックアウトする他の関連クラスには、SetAlarm と AlarmClock があります。ストック アプリでアラームを設定して反応する方法に従いたい場合は、grepcode でそれらを検索してください。

ただし、システム時刻を手動で変更してもアラームを操作できることを指摘しておくことは重要です。たとえば、明日の午後 10 時にアラームを設定した場合、手動で時刻を明日の午後 9 時 59 分にジャンプします。アラームは 1 分後に発火します。

于 2012-11-22T02:35:56.467 に答える
0

目覚ましの時間を比較するSystem.currentTimeMillis()

アラームの時間が現在の時刻よりも小さい場合は、アラームを設定する必要はありません

于 2015-09-08T17:30:39.863 に答える