Delay Boot Completed サンプル画像

BOOT_COMPLETED 遅延起動

Androidの起動後にBroadcastReceiverを使用して、サービスやアプリの起動などを行う場合がありますが、この処理を遅延させて実行する方法を紹介したいと思います。

対応Androidバージョン

Android 2.1~Android 6.0

処理内容

この処理は、ACTION_BOOT_COMPLETEDを受け取ったときにAlarmManagerを使用して指定した時間後に再度実行するようにしています。

AlarmManagerはsetActionでACTION_DELAY_BOOT_COMPLETEDをセットすることにより、再度実行したときの処理を分岐しています。

遅延時間はcalendar.add(Calendar.SECOND, 10)でセットしており、例では10秒に設定しています。

この処理を使用したサンプルプロジェクトをGitHubにて公開しています。

sfapps-jp/Delay-Boot-Completed

注意点

AlarmManagerにセットする遅延時間を長くすると、実行される時間のずれが大きくなるので、気をつけてください。

開発にあたって

この処理の作成前に遅延方法について調べたところBroadcastReceiverでnew Threadをして、その中でSleepを行うことで遅延できるようなことが書いてありましたが、1分以上遅延させた場合は処理が実行されない場合があり、この処理を作成することになりました。