2010-07-12 214 views

回答

1

在Android中調用Binder RPC方法是線程安全的,您可以在不同步的情況下從多個線程發出調用。

在接收端 - 假設服務處於與其通常不同的進程中 - 您可以從一個Binder線程池接收調用,而不管它在調用方如何調用。這意味着您的服務可能有多個呼叫同時運行,因此請注意這一點。在Android的文檔

更多信息:Processes and Threads

3

有界服務使用粘合劑類,如果我們想要客戶端和服務在同一個進程中運行,並且不希望在不同的應用程序執行併發IPC實現。 因此調用服務方法的線程(在客戶端)將被阻塞,直到它返回。 可能會在客戶端(活動)中產生多個線程,每個線程在任何時刻都會調用服務方法。因此,服務應該實現爲線程安全的,因爲可能一次有多個線程調用服務方法。 結論是,當Binder類擴展到實現有界服務時,android並不關心同步。

如果我們希望允許來自不同應用程序的客戶端訪問IPC的服務並希望處理服務中的多線程,則使用AIDL實現有界服務。結論是,當AIDL被用來實現有界服務時,android並不關心同步。