AndroidのAlarmManagerの最後の記事
AlarmManagerを使用した時は、システムの時刻が変更された時に通知されるブロードキャストにも注意する必要がある。

特にAlarmManager#setを使用している場合は、Android Phoneの時刻がユーザもしくはシステムにより変更が加わった場合は再設定をする必要がある。
(AlarmManager#setRepeatを使用していても、ロジックによっては必要となるでしょう)

投げられるブロードキャスト

  • android.intent.action.TIME_SET ユーザにより時刻が変更になった時
  • android.intent.action.TIMEZONE_CHANGED ユーザによりタイムゾーンが変更になった時

先日の記事に書いた、BOOT_COMPLETEDの記載も含めAlarmManagerを使用したときは、以下のような定型的な記述をManufestファイルに追加することになります。

<receiver android:name=".ReceiverInitAlarm">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>

私の場合は上記のように記載して、ReceverInitAlarmという名前のBroadcastReciverにて、ブロードキャストタイプを調べ分岐して処理を行っています。

ブログ内の関連する記事