2012-02-02 103 views
0

我的android服務需要有一個後臺線程,但我相信我不能使用IntentService,因爲服務需要儘可能多的運行,它不會被啓動和停止。與服務的後臺線程溝通

我希望從UI發送命令到服務後臺線程,如何做到最好。我不能用StartService(intent)調用來做到這一點,因爲我不會啓動和停止服務。後臺線程將連續執行網絡io。其他線程也可能需要將命令發送到服務的工作線程。

任何想法非常歡迎 感謝

+0

你認爲AIDL? – 2012-02-02 23:02:57

回答

2

做到這一點,典型的方法是使用一個broadcast receiver。後臺線程廣播包含新數據或指示某些數據已更改的消息。用戶界面可以選擇接收這些通知。您的UI還需要能夠從可用狀態重建自己。

您的活動以更直接的方式調用後臺線程的自由度更大,因爲活動的生命週期不在您的控制之下,而後臺線程的生命週期是。您可以通過多種方式將數據/消息傳輸到線程,只要您確保訪問已正確同步即可。

在後臺線程上工作的一種方法是使用HandlerThread。使用它,您可以將runnables發佈到每個可以串行運行的線程。除了後臺工作之外,您還可以從UI發佈請求。這可能不適合你,但這是一種可能性。