Bound Service

目的:作为其它组件的一部分。

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。

原文地址:https://www.cnblogs.com/toven/p/2611486.html