为什么AIDL必须支持多线程?

时间:2014-02-05 17:45:54

标签: android multithreading aidl

根据AIDL文档中的此消息,AIDL只有一个有效的用例。

  

只有当您允许来自不同应用程序的客户端访问IPC服务并希望在您的服务中处理多线程时,才需要使用AIDL。

在这种情况下,“处理多线程”究竟是什么意思?这不仅仅是拥有多个正在运行的线程的服务吗?

文档进一步指出:

  

如果您想执行IPC,但不需要处理多线程,请使用Messenger实现您的界面。

为什么Messenger不支持支持多线程的服务?无法在messenger中处理线程之间的通信(不使用共享内存)?

这里的问题是这个代码比使用Handler要复杂得多吗?

2 个答案:

答案 0 :(得分:2)

它只是意味着AIDL调用可以是并发的(例如,几个应用程序在同一服务上调用相同的AIDL接口),因为Android会为您处理此问题,但是Messenger它不是(但您可以手动执行)

答案 1 :(得分:0)

根据http://developer.android.com/guide/components/bound-services.html。 Messnger使用单线程对消息进行排队。因此无需处理任何同步问题。如果是AIDL,则由开发人员负责。