根据来自AIDL文档的此消息,AIDL只有一个有效用例。为什么AIDL需要支持多线程?
只有当您允许来自不同应用程序的客户端访问您的IPC服务并希望处理服务中的多线程时,才需要使用AIDL。
在这种情况下,“处理多线程”究竟意味着什么?这不仅仅是具有多个运行线程的服务吗?
该文档进一步状态:
如果要执行IPC,但并不需要处理多线程,实现使用Messenger的你的界面。
为什么Messenger无法接受支持多线程的服务?线程之间的通信不能在Messenger中处理(不使用共享内存)?
问题在这里,这个代码会显着更复杂,然后使用处理程序?
因此,它有很多服务的客户实例化信使并向服务发送消息,但这些消息不会被同时处理? – diedthreetimes
不,它不好,因为它可能不是线程安全的,这取决于你如何实现它。我的意思是如果你使用'Messenger',你必须注意潜在的线程安全。 – m0skit0
嗯,这里虽然线程安全会在邮件处理后发生。从[docs](http://developer.android.com/guide/components/bound-services.html#Messenger)看来,有很多线程通过信使发送消息没有问题。 (请参阅左侧的注释)。它最大的区别似乎是AIDL会为你自动创建一个线程池。并发管理的水平几乎相同。 – diedthreetimes