Android开发笔记---service的绑定及如何获得service实例

本文介绍了Android中Service的绑定方式,包括bindService与startService的区别,以及如何通过IBinder获取Service实例进行数据通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

service的绑定

1.bindService(serviceIntent, this,Context.BIND_AUTO_CREATE );这个函数是用来绑定service的,但是由于监听是这个类,所以需要实现ServiceConnection的接口,即实现public void onServiceConnected(ComponentName name, IBinder service);public void onServiceDisconnected(ComponentName name)这两个函数,其中第一个是建立连接的时候就执行的,第二个是建立service被强制撤销所要执行的

2.unbindService(this);这个是解除绑定service的,同样需要设置监听,只不过监听也是本身这个类

3.public IBinder onBind(Intent intent)这个方法是扩展service之后需要重写的方法,这个是一旦建立监听便会执行的操作,如果返回值为NULL,则上面所讲的onServiceConnected函数就不会执行;如果返回的是一个IBinder的对象,则会调用刚才说的那个函数,要想返回IBinder类型的对象,只要声明一个内部类public class serviceBinder extends Binder并建立一个对象即可。


bind service和 start service之间的不同

1.当执行bind时,如果没有建立service,就会建立service,并且一旦取消绑定时,也会将service销毁;然而当执行时service已经建立,则在解除绑定的时候service就不会销毁而存在

2.用startservice建立service时,按home键,把当前的activity暂停,此时service不会被销毁,但是如果用bindservice建立的service则会销毁

3.bindservice可以对service进行数据通信,而startservice只能控制建立和结束


获得service实例---我们通过IBinder来获得

1.在绑定service时我们讲到了建立了一个serviceBinder extends Binder内部类,并实例化返回这个对象,我们就通过它来解决获得service实例的问题,只要获得了service实例那么我们就可以对service操作,及控制输出的数据

2.我们在serviceBinder类中建立一个方法

public EchoService getService()
{
return EchoService.this;
}这个方法可以返回当前service的实例

3.我们在mainactivity中建立一个EchoService的对象echoService,然后在onServiceConnected中将这个变量实例化

public void onServiceConnected(ComponentName name, IBinder binder) {
System.out.println("onBindConnected");
echoService=((EchoService.serviceBinder)binder).getService();
}这样我们就得到了所要的service的实例,进而进一步使用,控制service。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值