Android绑定服务和AIDL服务

3
我在 Android 开发者指南中读到了关于 绑定服务AIDL 基础服务 的内容。
两者都允许其他组件绑定并执行进程间通信。
绑定服务允许组件(如活动)绑定到服务,发送请求,接收响应,甚至执行进程间通信(IPC)。
AIDL(Android 接口定义语言)类似于您可能使用过的其他 IDL。它允许您定义编程接口,以便客户端和服务端同意使用进程间通信(IPC)相互通信。
那么这两者有什么区别呢?
2个回答

2

AIDL 只是与绑定服务通信的一种方式。不存在“基于 AIDL 的服务”这样的概念,它只是返回基于 AIDL 接口生成的 Binder 的绑定服务。


在Android开发者ADIL指南中,开发人员表示:“注意:仅当您允许来自不同应用程序的客户端访问您的服务进行IPC并且想要处理服务中的多线程时,才需要使用AIDL。如果您不需要在不同应用程序之间执行并发IPC,则应通过实现Binder来创建您的接口。”这是什么意思? - onmyway133
它的意思很明显:如果你使用AIDL,你允许多个客户端同时连接,并且你应该能够处理这些请求。如果你使用Messenger,它会为你序列化请求。如果你在同一进程中使用服务,你可以直接访问(而不需要IPC),通过继承Binder类来实现。 - Nikolay Elenkov

0

AIDL是一份合同,如果客户端与服务通讯,则使用AIDL格式,使双方都知道它的含义。或者您可以将“this”、“that”和“theOther”放入Bundle中并发送。

绑定服务意味着合同各方应该互相认识,比如电话号码、绑定器、名称或其他什么。服务应该知道客户端,可能客户端也应该知道服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接