目的:作为其它组件的一部分。
onBind()返回IBinder, 3种定义IBinder的方式:
1、继承Binder:服务app私有,仅作为后台worker thread,最简单。client直接调用service的public方法。
2、Messager:可IPC,单线程。service定义一个Handler来handleMessage。Messager中有handler、IBinder属性,把所有client的请求通过messager中的handler放到一个queue中,因此service每次收到一个请求。同时处理多个请求需用AIDL。
client需要清楚service定义的message类型的规范含义。
C—S之间通过msg通信,实质使用了AIDL,msg都是基本数据类型。
3、AIDL:可IPC,可支持多线程请求;把object分解成原始类型,使得操作系统可理解并跨进程。
客户端实现ServiceConnection,在onServiceConnected()中得到IBinder。