最近、更新頻度がアップしてきましたが、連続した範囲なので、まとめて呼んでもらった方が理解が深まるかもしれません。
今回は、駐在アプリの作り方を勉強します。
Serviceを利用している場合に、常にユーザーの情報を取得する必要がある場合でも、実行後に、電源を切ってしまうと、動作しなくなってしまう場合があります。
再起動もしないはずです。サービスは起動中であれば、メモリの空き次第によって再起動をするのですが、そうでない場合には、再起動はしないようです。
この場合、Receiverで、アンドロイドの起動時に、Serviceを呼び出す事で、Serviceを基本的には常に実行させる事ができます。
BroadCastReceiverでは、最初にmanifest.xmlを変更する必要があります。起動時のイベントを取得する為にintent-filterを用います。
<receiver android:name="BoostReceiver" android:process=":remote"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
BOOT_COMPLETEDが取得したイベントです。
BoostReceiverでは次のような形で、アクションが起動したものであれば、SampleServiceを呼び出す。と言う仕様にして実行をします。
public class BoostReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(Intent.ACTION_BOOT_COMPLETED)){ Toast.makeText(context, "起動をしたのでサービスを開始します。", 1200).show(); context = context.getApplicationContext(); Intent service = new Intent(context, SampleService.class); context.startService(service); } } }
これで、アンドロイド起動の際にサービスを起動させる事ができ、かつ、駐在のアプリを作成する事ができるようになりました。
以上です。