service和activity绑定步骤

1、把service在mainfest中注册,如:<service android:name="com.example.android.download.DownLoadService"/>

2、一个类继承Service,此类中一个内部类继承Binder,service类实现复写onBind方法,返回值为继承Binder的对象,如下:

public class DownLoadService extends Service {

    private static final String TAG = "DownLoadService";

    private SimpleBinder sBinder = new SimpleBinder();

    @Override
    public IBinder onBind(Intent arg0) {
        Log.i(TAG, " onBind");
        return sBinder;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(TAG, " onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }

    public class SimpleBinder extends Binder {

        /**
         * 测试activity和service是否绑定成功
         */
        public int add(int a, int b) {
            return a + b;
        }
    }
}


3、一个类继承Activity,声明三个全局变量

    private boolean isBindered; // 是否已经和service绑定
    private MyServiceConnection myServiceConnection = null;
    private DownLoadService.SimpleBinder sBinder;


在需要绑定service时调用startService方法:

    /**
     * 启动service
     */
    private void startService() {
        if (isBindered) {
            Log.i(TAG, " startService, is bindered");
        } else {
            Log.i(TAG, " startService, to bind service");
            Intent intent = new Intent(); 
            intent.setClass(DownloadActivity.this, DownLoadService.class);
            myServiceConnection = new MyServiceConnection();
            this.startService(intent); // 用startService方法启动service,不需要时可不调用
            bindService(intent, myServiceConnection, BIND_AUTO_CREATE);
        }
    }

内部类:

    class MyServiceConnection implements ServiceConnection {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.i(TAG, " in MyServiceConnection, onServiceConnected");
            sBinder = (DownLoadService.SimpleBinder) service;
            isBindered = true;
            int addRerue = sBinder.add(1, 5);
            Log.i(TAG, " addRerue is: " + addRerue);
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            Log.i(TAG, " in MyServiceConnection, onServiceDisconnected");
        }
    }

4、以上这样就最简单的实现了activity和service绑定

备注:解除绑定可以如下:

if (isBindered) {
    unbindService(myServiceConnection);
}

只要打印出了如下log,就说明绑定成功:

addRerue is: 6


可查看源代码,路径:http://download.csdn.net/detail/w250shini11/8266007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值