2011-04-23 61 views
7

我需要在單獨的線程上運行服務。這是因爲它訪問的Web服務可能需要5-10秒,而我不想獲得ANR。我也將對這項服務有約束力。我已經找到一種方法來在一個單獨的線程的東西,如推出的服務:如何在單獨的線程上運行服務?

Thread t = new Thread(new Runnable() { 

      public void run() { 
       //Launch and/or Bind to service here 
      } 
     }); 
     t.start(); 

不過,我相信這隻有在服務本身在主線程中運行,運行在一個新的線程啓動代碼。那麼我將如何在另一個線程中真正運行服務中的所有代碼?

在此先感謝

回答

7

您可以使用IntentService

IntentService是 服務可處理上 需求異步 請求(表示爲意圖)的基類。客戶通過 startService(意圖)調用發送請求;根據需要 服務已啓動,處理 每個意向依次使用工作者 線程,並且當它運行 失去工作

http://developer.android.com/reference/android/app/IntentService.html

+3

感謝您的快速回復,將這項工作停止本身場景。不過,我還有另一項服務,每200毫秒監測一次GPS,我不希望它減慢主線程速度。由於這個服務依賴onLocationChanged被調用,我不希望它被殺死,因爲意圖服務會。我將如何運行這是一個單獨的線程?或者這會是一個單獨的問題? – RomanP 2011-04-23 15:48:20

+0

拯救了我的一天..增加了知識服務vs IntentService ... – 2016-03-31 05:08:10

相關問題