2011-06-23 57 views
1

我在繞過這個想法時遇到了一些麻煩,我想要一些輸入。我從我的初始活動開始一個服務,它運行一個新線程(在這種情況下實現Runnable的類,不擴展Thread),它的onCreate()。線程首先創建一個TCP客戶端套接字,然後隨着應用程序運行,活動切換等等,在後臺每隔X秒開始發送請求並接收響應。但是,我需要能夠從我的所有活動中訪問線程,以告訴它在UI元素被觸發時發送自定義請求。該服務可以從靜態上下文訪問,但是當我嘗試訪問正在運行的線程實例時,出現與在主線程上執行網絡操作有關的錯誤,這意味着它不是實際實例,而是我正在訪問的UI線程。我想過在共享的Application類中實現一個消息隊列,該服務可以輪詢新消息,但這看起來很難看。也許我正在解決這個問題,並且有更好的方法來解決這個問題?任何意見或幫助將不勝感激。訪問線程開始於服務

+1

不,你正朝着正確的方向前進。使用該消息隊列('BlockingQueue')與線程進行通信。 –

+0

您可以使用AIDL(http://developer.android.com/guide/developing/tools/aidl.html)與服務進行通信 – ethrbunny

回答

1

您可以使用Looper/Handler機制將消息發送到線程。

+0

謝謝,這是我最終進入的方向,它看起來很完美。出於某種原因,我最初忽略了它。 – Matt