ユーザーが特定の時間にアラームを鳴らし、選択した間隔で繰り返すようにスケジュールできるアプリがあります。SharedPreferences をストレージとして使用して、JSON を使用してアラームの詳細を保持しています。
私は AlarmManager を使用して、アラームを鳴らしてユーザーに通知する必要があることをアプリに通知するタイミングをスケジュールしています。現在、AlarmManager の setRepeating() メソッドを使用して、ユーザーが指定した間隔を提供しています。これはうまく機能し、理論的には、AlarmManager は間隔を使用して次のアラーム時刻を再スケジュールするだけなので、アプリは次のアラーム時刻を格納する JSON を更新する必要はありません。
ただし、デバイスが再起動されたときに、AlarmManager がアラームを見逃したと考えるのを避けるために、AlarmManager に最新のアラーム時刻を提供する必要があると考えています。これは必ずしもそうではないためです。
それで、これを行う最善の方法は何ですか?
- 必要ではないかもしれませんが、アラームが鳴ったときに JSON の次のアラーム時刻を更新します (setRepeating() は、再起動がない限りこれを処理します)?
- シャットダウンブロードキャストを登録してリッスンし、次にJSonを更新します(これにより疑問が生じます-電話がシャットダウンされている場合、アプリがアラームの詳細を計算してストレージに書き込むのにどれくらいの時間がかかりますか)?
- JSON を更新せずに、AlarmManager によって起動されるオブジェクトにロジックを追加して、ブロードキャストされたばかりのアラームが有効であり、ユーザーに警告する必要があるかどうかを判断しますか?
上記のいずれかが機能すると確信していますが、どれが最も良い方法であるかを判断することはできません.