您的位置:首页 > 移动开发 > Android开发

android 四大组件值Service(3) 绑定式服务

2016-06-25 08:55 387 查看
bound服务是指允许被应用程序组件绑定的服务,通过调用bindService()可以完成绑定,
用于创建一个长期存在的连接(并且一般不再允许组件通过调用startService()来start服务。

当应用程序中的activity或其它组件需要与服务进行交互,或者应用程序的某些功能需要暴露给其它应用程序时,
你应该创建一个bound服务,并通过进程间通信(IPC)来完成。

要创建一个bound服务,你必须实现onBind()回调方法,并返回一个IBinder对象,
此对象定义了与服务进行通信的接口。 然后,其它应用程序组件可以调用bindService()来获得接口
并调用服务中的方法。 服务只在为绑定的应用程序组件工作时才会存活,因此,只要没有组件绑定到服务,
系统就会自动销毁服务(你不需要像started服务中那样通过onStartCommand()来终止一个bound服务)。

要创建一个bound服务,首先必须定义好接口,用于指明客户端如何与服务进行通信。
这个客户端与服务之间的接口必须是一个IBinder对象的实现,并且你的服务必须在onBind()
回调方法中返回这个对象。一旦客户端接收到这个IBinder,它就可以通过这个接口来与服务进行交互。

同一个服务可以被多个客户端绑定。当客户端完成交互时,会调用unbindService()来解除绑定。
一旦不存在客户端与服务绑定时,系统就会销毁该服务。

实现bound服务的方式可以有很多种,实现的过程也比started类型的服务更为复杂,
因此bound服务将在单独的bound服务文档中讨论。

Binder:
    Base class for a remotable object, the core part of a lightweight
remote procedure call mechanism defined by [code]IBinder
Binder是一个远程对象的基类,是轻量级远程进程调用机制IBinder的子类

所以进行数据通行使用Binder

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: