6

一个快速的问题:Android 文档非常清楚地表明Messenger是用于 IPC(进程间通信)的AIDL的替代方案。他们从未明确说明这是否扩展到在不同应用程序中运行的进程,或者只是在一个应用程序中。我强烈怀疑前者,但想检查一下。

谢谢!简

4

2 回答 2

7

AIDL 仅真正用于应用间 IPC。虽然可以使用 AIDL 进行内部通信,但它不会给您带来任何好处,并且会限制您的Binder实现。

此外,在绝大多数情况下,一个应用程序不会有多个进程。大多数应用程序几乎没有理由拥有多个进程。

Messenger, createPendingResult(), ResultReceiver, 私有广播Intents——所有这些都是服务跨进程边界与客户端通信的方式。

于 2011-03-30T11:47:43.843 回答
0

Messenger 内部使用 AIDL,它可以在多个应用程序中使用。根据 android 文档,一个 Messenger 服务可以用于两个进程之间的通信,但它不限制它在同一个应用程序中。进程可以在同一个应用程序或不同的应用程序中。

如果我们希望请求在进入处理程序队列中的消息时按顺序处理并且它们被逐一处理,则应该使用 Messenger,而在 AIDL 中,所有请求都将立即处理,并且维护线程安全成为开发人员的责任。

于 2017-07-04T12:55:04.410 回答