一个简单的问题:Android文档非常明确地说Messenger是IPC {inter-process communication} AIDL的替代方案。他们从未明确说过,这是否扩展到在不同应用程序中运行的进程,或仅在一个应用程序内。我强烈怀疑前者,但想检查一下。
谢谢! 扬
答案 0 :(得分:8)
AIDL仅用于应用程序间IPC。虽然可以使用AIDL进行内部通信,但它并不会为您带来任何好处,并会限制您的Binder
实施。
此外,在绝大多数情况下,一个应用程序没有多个进程。大多数应用程序没有理由拥有多个进程。
Messenger
,createPendingResult()
,ResultReceiver
,私有广播Intents
- 所有这些都是服务跨越流程边界与客户进行通信的方式。
答案 1 :(得分:0)
Messenger内部使用AIDL,它可以在多个应用程序中使用。根据android文档,Messenger服务可以用于两个进程之间的通信,但不限制它在同一个应用程序中.Processes可以在同一个应用程序或不同的应用程序中
如果我们希望在处理程序队列中输入消息时按顺序处理请求并且逐个处理它们,则应使用Messenger;而在AIDL中,所有请求将立即处理,并且开发人员有责任维护线程安全