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