Androidで定期実行処理を端末ブートした時に再設定するやり方メモです。
AlarmManagerにスケジュールしたPendingIntentは、端末ブート時にクリアされていまいます。
なので、定時処理をさせたい場合はブート後に再度スケジュールしてあげる必要があります。
リブート時にアラーム再設定するやり方
端末ブート時にはACTION_BOOT_COMPLETEDがブロードキャストされます。
なので、こいつを受け取るブロードキャストレシーバーを用意して、その中で再スケジュールしてあげればOKです。
1 | public class BootBroadcastReceiver extends BroadcastReceiver { |
3 | public void onReceive(Cntext context, Intent intent) { |
4 | if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()) { |
あと、AndroidManifest.xmlにパーミッション設定を追加します。
1 | < uses-permission android:name = "android.permission.RECEIVE_BOOT_COMPLETED" /> |
以上です。
あとがき
起動時のアラームスケジューリング方法については、これでOK。
アラーム再設定のタイミングとしては、起動時以外にも
・インストール時
・バージョンアップ時
・端末時間の変更、ロケール設定の変更時
などが考えられますが、これも受け取るアクションを変えるだけで、基本的には上記方法で実現できます。
ではでは~