Messenger(AIDL 的轻量级替代品)能否用于跨应用通信?

Posted

技术标签:

【中文标题】Messenger(AIDL 的轻量级替代品)能否用于跨应用通信?【英文标题】:Can Messenger (lightweight alternative to AIDL) be used for cross-application communication? 【发布时间】:2011-03-30 10:46:59 【问题描述】:

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

谢谢! 一月

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

太棒了!我认为这意味着 Messenger 可以进行跨应用通信。非常感谢!【参考方案2】:

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

如果我们希望请求在进入处理程序队列中的消息时被顺序处理并且它们被一一处理,则应该使用Messenger .

【讨论】:

以上是关于Messenger(AIDL 的轻量级替代品)能否用于跨应用通信?的主要内容,如果未能解决你的问题,请参考以下文章

Messenger实现进程间通信(IPC)

千里马Android Framework实战开发-binder通信之Messenger介绍

千里马Android Framework实战开发-binder通信之Messenger介绍

为啥 AIDL/Messenger 绑定到服务?

Android 进程间通信之Messenger

Messenger与AIDL的异同