android-serviceについて



サービスとは

サービスは、画面状態とは関係せずに独立して処理を行う(バックグラウンド処理)仕組みです。

ユーザによる画面操作や着信処理などの他画面への遷移(アクティビティの停止)が行われても処理を続行する場合に利用します。

サービスの起動方法には「インテント」を利用する方法と「バインド」を利用する方法があります。


インテントからのサービス起動

Serviceクラスを継承して、startServiceメソッドを呼び出します。

実装が容易ですが、アクティビティからサービスの処理動作を変更することが困難であるという問題があります。


バインドからのサービス起動

バインドを利用することで、起動したサービスに対して操作を行う場合に、Javaのインターフェース呼び出しを行うことができます。

バインドの基本的な使用方法は以下の通りです。

  1. AIDL(Android Interface Definition Language)ファイルでサービスが提供する機能を定義します。
  2. AIDLファイルは、android上で動作する2プロセス間で行うIPC(Inter Process Communication)のインターフェースを定義します。
  3. インターフェースにサービスを実装します。
  4. マニフェストファイルにサービスを記述します。
  5. ServiceConnectionインターフェースを実装したクラスを作成して、サービスの接続管理を行う。
  6. アクティビティからサービスをバインドします。

interface IBindService {
    /* 処理 */
}

バインド(関連付け)の各種動作

public IBinder onBind(Intent intent)
public void onRebind(Intent intent)
public boolean onUnbind(Intent intent)

サービスの利用

サービスを利用するには「AndroidManifest.xml」にサービスの登録を行う必要があります。

<service
   android:enabled="true"
   android:name=".Service" />


サービスの起動サンプル


public class SimpleService extends Service {
  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    Log.d("EX_LOG", "onCreate");
  }

  @Override
  public int onStart(Intent intent, int startId) {
    Log.d("EX_LOG", "onStart");
    return START_STICKY;
  }
  
  @Override
  public void onDestroy() {
    super.onDestroy();
    Log.d("EX_LOG", "onDestroy");
  }
}


関連

android





スポンサード リンク