AlarmManagerの使用に関する考慮事項
AlarmManagerを使用する際、以下の点に注意してください
- システムの AlarmManager サービスインスタンスを取得するには、Context.getSystemService(Context.ALARM_SERVICE) メソッドを使用できます。
- アラームを設定する際に、絶対時間か相対時間を指定できます。絶対時間とは、具体的な日付と時刻を指定するもので、相対時間とは現在時刻からの相対的な時刻を指定するものです。
- 時刻関連の時間設定でアラームを設定する場合は、相対時間が現在時刻を基準としていることに注意が必要です。機器がアラーム設定前にスリープ状態になると、機器の復帰と同時にアラームがトリガーされます。
- アラームを設定する際は、アラーム発動時に指定のコンポーネント(ブロードキャストレシーバー、サービスなど)を起動するためのPendingIntentを指定する必要があります。PendingIntentは、PendingIntent.getBroadcast()、PendingIntent.getService()、またはPendingIntent.getActivity()メソッドを使用して取得できます。
- アラームを繰り返しトリガーする必要がある場合は、setRepeating()メソッドを使用して繰り返し間隔を設定できます。
- アラームを設定する際には、RTC_WAKEUP(リアルタイムクロックによるアラームによる起床を意味する)のように種類を指定することができ、この設定によりスリープ状態でもアラームをトリガーできます。
- 指定したアラームをキャンセルするには、cancel() メソッドを使用します。
- デバイスをスリープ中であってもアラームをトリガーさせるには、WAKE_LOCK パーミッションの申請を追加する必要があります。
- Android 6.0 では RECEIVE_BOOT_COMPLETED 権限と SET_ALARM 権限の動的申請が必要になり、端末再起動時にアラームを再登録できるようになりました。
- アラームマネージャーの使用にはバッテリー寿命への影響がある可能性があるので、使用時にアラーム発動の頻度および処理ロジックを適切に選択して、不要なリソース消費を減らす必要があります。