2011-02-06 86 views
1

在遠程進程中運行Android服務是否意味着它運行在不同的線程上?這是本地和遠程服務之間的區別嗎?Android遠程服務

同樣,當通過IPC調用遠程服務時,它是否立即返回?還是等待行動呢?

回答

8

在遠程進程中運行Android服務是否意味着它在不同的線程上運行?

由於線程由其進程擁有,因此在單獨的進程中擁有服務意味着它將使用除任何其他進程使用的線程之外的線程。

這是本地和遠程服務之間的區別嗎?

通常,「遠程服務」是由單獨的應用程序提供的。

同樣,當通過IPC調用遠程服務時,它是否立即返回?還是等待行動呢?

調用是同步的 - 它們必須是,因爲AIDL方法可以返回結果。當客戶端通過AIDL定義的方法調用服務時,客戶端將阻塞,直到服務返回,無論雙方恰好在使用什麼進程或線程。

1

Android服務,是默認情況下,在同一個線程中運行的活動等:

「需要注意的是服務,如其他應用程序對象,在其宿主進程的主線程中運行」 ref

本地服務是在編譯時由同一應用程序中的其他組件使用的本地服務:它們可以像調用任何其他對象一樣調用服務的方法。

遠程服務是通過AIDL調用的服務,並且不需要編譯時間關係。