2011-05-26 82 views
1

我們一直在使用Android中的Service和IntentServices進行一些測試。據我們瞭解,IntentService的好處之一是它自己的線程和工作隊列... 經過測試,我們注意到如果您向這兩個服務發送100個意向,它們都將開始順序執行...有關服務與IntentService之間特定「差異」的問題

這是IntentService的一部分,因爲它是工作者隊列,但Android如何處理多個請求到非多線程服務?因爲它似乎也有某種潛在的工作者隊列?或者,也許某種由Android系統本身保存的Intents隊列? 如果是這樣,是否有任何方法來附加它,例如看它的長度/大小?

回答

3

但是Android如何處理多個請求到非多線程服務?

呼叫至startService()排隊在發送方的主應用程序線程的消息隊列,就像調用任何GUI操作(例如,setText()),來電startActivity(),等等。

IntentService擁有第二個隊列,在服務本身內部,接收到的Intents由後臺線程處理。

+0

好吧,這只是爲了好玩(如果可以這樣調用的話),假設你有兩個運行的應用程序,它們都向同一服務發送幾個startService()請求......命令是什麼?根據你的解釋原因,會有兩個消息隊列參與進來,那麼在將下一個Intent發送給服務本身的那些人的結尾處是否存在某種「監管機構」?順便說一句,謝謝你的幫助馬克,再次... – TiGer 2011-05-26 13:57:42

+0

@TiGer:「假設你有兩個應用程序運行,都發送幾個startService()請求到同一個服務......命令是什麼? - 訂單將不確定。我們可以說最好的是,每個客戶端的請求將按照它們發送的順序執行,但是請求可能會根據每個客戶端的主應用程序線程實際處理這些請求的時間進行交織。 – CommonsWare 2011-05-26 14:02:24

相關問題