Android 绑定类型服务---简介
绑定类型的服务是在客户-服务接口中的服务端。绑定类型服务允许组件(如Activity)绑定服务、发送请求、接收响应、以及执行进程间通信(IPC)。一个典型的绑定类型的服务只跟它所服务的那个应用程序组件同时存在,并且不在后台无限期的运行。
这份文档向你展示了如何创建绑定类型的服务,包括怎样跟其他应用程序组件绑定。但是,关于服务的基本信息你还是应该参照“Android Service”这份文档,如怎样从服务中发送通知,怎样设置服务在前台运行等等。
基础
绑定类型服务是Service类的一个实现,它允许其他应用程序绑定它,并跟它进行交互。要给服务提供绑定的能力,就必须要实现onBind()回调方法。这个方法返回一个IBinder对象,这个对象定义了客户端能够使用的与服务交互的编程接口。
客户端能够通过调用bindService()方法绑定服务。客户端绑定服务时,必须提供ServiceConnection()方法的实现,这个方法监视跟服务端的连接。BindService()方法不带有返回值,并立即返回,但是当Android系统在客户端和服务端创建连接时,它会在ServiceConnection方法上调用onServiceConnected()方法来发送客户端跟服务端进行交互用的IBinder对象。
多个客户端能够连接到同一个服务上,但是只在第一个客户端绑定时,系统调用服务的onBind()方法来发送获取对象。然后系统会给其他任何绑定的客户端发送相同的IBinder对象,而不会再次调用onBind()方法。
当最后的客户端从服务上解绑,系统就会销毁这个服务(除非这个服务也通过startService()方法启动了)。
在你实现绑定类型的服务时,最重要的部分是定义onBind()回调方法返回的接口。有很多不同的方法能够定义服务的IBinder接口,在下面的章节中会分别讨论这些技术。