趣味は車輪の再発明♪

サービスとのバインド - [ Android / java(Android) ]


「小さな小さなサンプル&スニペット」
▲インデックスへ戻る▲
カテゴリ:「Android」

アクティビティ(android.app.Activity)からサービス(android.app.Service)に接続する方法

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;

public class MyActivity extends Activity {
	
	// サービス
	private MyService mySvc;
	
	// サービスコネクション
	private ServiceConnection mySvcConn;
	
	/**
	 * アクティビティのCreate
	 */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //サービスコネクションを生成。
        mySvcConn = new ServiceConnection() {
        	//サービスとの接続通知(bindServiceの後に呼ばれる)
			public void onServiceConnected(
					ComponentName className, IBinder binder)
			{
				MyService.MyBinder mySvcBinder;
				mySvcBinder = (MyService.MyBinder)binder;
				mySvc = mySvcBinder.getService();
			}
			//サービスと切断(unbindServiceの後に呼ばれる)
			public void onServiceDisconnected(
					ComponentName className)
			{
				mySvc = null;
			}
		};
		
		//サービスを開始
        startService(
        		new Intent(this, MyService.class));
    }
    
    /**
     * アクティビティのResume時。
     */
    @Override
    public void onResume() {
    	super.onResume();
    	
		//サービスをバインドする
        bindService(
        		new Intent(this, MyService.class),
        		mySvcConn, Context.BIND_AUTO_CREATE);
    }

    /**
     * アクティビティのポーズ時
     */
    @Override
    public void onPause() {
    	super.onPause();
    	
		//サービスとのバインド解除
		unbindService(mySvcConn);
    }
    
    @Override
    protected void onDestroy() {
		super.onDestroy();
		
        //通信サービスの停止
        stopService(
        		new Intent(this, MyService.class));
    }
}		

小さくないですがスミマセン。

アクティビティからサービスへ接続するにはbindServiceを使用します。(切断はunbindService)

ここではサービスの開始と終了を、同じアクティビティから指示していますが、サービスを開始するだけのアクティビティや、終了させるだけのアクティビティがあってもかまいません。

サービスのインスタンスはマニフェストファイルへの指定により生成されています。開始されているかどうかはその時の状況によります。

カテゴリ「Android」の他のエントリ:
| サービスの実装 |



RSS Feed Widget
サービスとのバインド - [ Android / java(Android) ]
(http://bicycle.life.coocan.jp/takamints/index.php/snippets/snippet/android/activitybindservice/android.java)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )