Android绑定服务和AIDL服务

Android绑定服务和AIDL服务,android,service,bounds,aidl,Android,Service,Bounds,Aidl,我阅读了Android开发者指南 两者似乎都允许其他组件绑定并执行进程间通信 绑定服务允许组件(如活动)绑定到 服务、发送请求、接收响应,甚至执行 进程间通信(IPC) AIDL(Android接口定义语言)与其他IDL类似 你可能和我一起工作过。它允许您定义编程 客户端和服务都同意的接口,以便 使用进程间通信(IPC)相互通信 那么区别是什么呢?AIDL只是与绑定服务通信的一种方式。没有“基于AIDL的服务”,它只是一个绑定服务,返回基于AIDL接口生成的绑定。AIDL是一个合同,如果客户与服

我阅读了Android开发者指南

两者似乎都允许其他组件绑定并执行进程间通信

绑定服务允许组件(如活动)绑定到 服务、发送请求、接收响应,甚至执行 进程间通信(IPC)

AIDL(Android接口定义语言)与其他IDL类似 你可能和我一起工作过。它允许您定义编程 客户端和服务都同意的接口,以便 使用进程间通信(IPC)相互通信


那么区别是什么呢?

AIDL只是与绑定服务通信的一种方式。没有“基于AIDL的服务”,它只是一个绑定服务,返回基于AIDL接口生成的绑定。AIDL是一个合同,如果客户与服务对话,AIDL是使用的格式,因此双方都知道它的含义。或者,你可以把这个,那个和其他东西放在一个包裹里,然后说这里。哦,看那个,这个和那个,或者你们可以发信息


绑定服务意味着合同双方应该相互了解,比如电话号码、活页夹、姓名等。服务应该了解客户,也许客户应该了解服务。

在Android开发者的ADIL指南中说“注意:只有当您允许来自不同应用程序的客户端访问IPC服务并希望在服务中处理多线程时,才需要使用AIDL。如果不需要在不同的应用程序之间执行并发IPC,则应通过实现绑定器来创建接口“那么这意味着什么呢?这意味着:如果你使用AIDL,你允许多个客户端同时连接,你应该能够处理这个问题。”。如果您使用messenger,它将为您序列化请求。如果您在同一进程中使用该服务,您可以通过自己扩展Binder的类直接访问它(无IPC)。