2010-07-12 31 views

回答

1

在Android中调用Binder RPC方法是线程安全的,您可以在不同步的情况下从多个线程发出调用。

在接收端 - 假设服务处于与其通常不同的进程中 - 您可以从一个Binder线程池接收调用,而不管它在调用方如何调用。这意味着您的服务可能有多个呼叫同时运行,因此请注意这一点。在Android的文档

更多信息:Processes and Threads

3

有界服务使用粘合剂类,如果我们想要客户端和服务在同一个进程中运行,并且不希望在不同的应用程序执行并发IPC实现。 因此调用服务方法的线程(在客户端)将被阻塞,直到它返回。 可能会在客户端(活动)中产生多个线程,每个线程在任何时刻都会调用服务方法。因此,服务应该实现为线程安全的,因为可能一次有多个线程调用服务方法。 结论是,当Binder类扩展到实现有界服务时,android并不关心同步。

如果我们希望允许来自不同应用程序的客户端访问IPC的服务并希望处理服务中的多线程,则使用AIDL实现有界服务。结论是,当AIDL被用来实现有界服务时,android并不关心同步。