AIDL主要用于应用间进程通信。虽然可以使用AIDL进行内部通信,但这并没有什么好处,并且会对您的Binder
实现产生限制。
此外,在绝大多数情况下,一个应用程序不会有多个进程。大多数应用程序没有多个进程的必要。
Messenger
、createPendingResult()
、ResultReceiver
、私有广播Intents
——所有这些都是服务与客户端跨进程通信的方式。
Messenger 内部使用 AIDL,它可以在多个应用程序中使用。根据 Android 文档,Messenger 服务可用于两个进程之间的通信,但不限于相同的应用程序。进程可以位于同一应用程序或不同应用程序。
如果我们希望请求按顺序处理,那么应该使用 Messenger,因为它将消息输入处理程序队列中,并逐个处理它们,而在 AIDL 中,所有请求将立即处理,并且开发人员需要负责维护线程安全性。