使用绑定控制Service

概述

在Activity绑定Service时,通过返回一个Binder子类的对象(该子类中定义了操作Service的方法)。

这样在Activity中,通过调用该对象的方法,实现对Service的控制。

操作步骤

步骤1、创建Service的一个子类,在该类中定义一个内部类,例如MyBinder,该类是Binder的子类。

步骤2、在内部类中定义若干操作Service的方法。

步骤3、在onBind方法中返回一个该内部类的对象。

步骤4、在Activity中绑定Service,在ServiceConnection的ServiceConnected方法中将第二个参数转换

为该Service的内部类的类型并赋值给一个对象。

步骤5、调用该对象中的方法操作实现对Service的操作。

示例

步骤1、以下是MyService类中关键代码:

public class MyService extends Service {

private String tag="MyService";

MyBinder mBinder;

public class MyBinder extends Binder{

public void print(String text){

MyService.this.print(text);

}

}

@Override

public IBinder onBind(Intent intent) {

Log.i(tag,"MyService onBind()");

return new MyBinder();

}

说明:

1、该类中定义了一个内部类:MyBinder,该类中定义了一个名为print的方法,

该方法调用了MyService类中的一个自定义的方法print。

2、在onBind方法中,创建并返回了一个Mbinder对象。

步骤2、以下是Activity中的关键代码:

    MyService.MyBinder mBinder;

    private ServiceConnection mConn=new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

}

//绑定成功时触发本方法

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

//获得MyService.bind()方法返回的对象(service)

mBinder=(MyService.MyBinder)service;

}

};

说明:当Activity与MyService绑定成功时,执行OnServiceConnected,并将onBind方法返回的对象传

递给service对象,则mBinder获得了onBind方法返回的对象。

步骤3、这是Activity中调用mBinder对象中方法的代码:

case R.id.btnBindService://绑定服务

intent.setClass(this, MyService.class);

bindService(intent, mConn, BIND_AUTO_CREATE);

mIsBind=true;

break;

case R.id.btnUnbindService://解除与服务的绑定

intent.setClass(this, MyService.class);

if(mIsBind){

mBinder.print("unBind");

unbindService(mConn);

mIsBind=false;

}

break;

说明:当解除绑定时,执行红框中的代码,调用mBinder.print方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值