我在Service
類中得到NetworkOnMainThreadException
類,這本質上沒有意義,因爲服務是後臺進程,據我瞭解。NetworkOnMainThreadException服務中
在Service方法中,我正在調用靜態輔助方法來下載數據。我也使用DefaultHttpClient。
這是怎麼回事?
我在Service
類中得到NetworkOnMainThreadException
類,這本質上沒有意義,因爲服務是後臺進程,據我瞭解。NetworkOnMainThreadException服務中
在Service方法中,我正在調用靜態輔助方法來下載數據。我也使用DefaultHttpClient。
這是怎麼回事?
onStartCommand()
在Service
的UI線程上運行。嘗試使用IntentService,或在Service
(Handler
/Runnable
,AsyncTask
)中使用任何其他線程方法。
服務回調都在主線程上運行,也就是UI線程。如果你想做後臺工作,可以啓動一個Thread,或者使用IntentService的onHandleIntent(Intent i)。
當應用程序嘗試在其主線程上執行 網絡操作時引發的異常。
這僅適用於針對Honeycomb SDK或 的應用程序。針對早期SDK版本的應用程序允許在其主要事件循環線程上執行聯網,但不鼓勵 。
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
我只是用這個解決此問題:
public int onStartCommand(Intent intent, int flags, int startId) {
RefreshDBAsync task = new RefreshDBAsync(this);
task.execute();
return START_STICKY;
}
RefreshDBAsync在每5分鐘進行請求到服務器
你能展現更容易調查的代碼? – OleGG 2012-02-01 15:04:52
查看我關於** ['NetworkOnMainThreadException']的帖子(http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html)**。它解釋了爲什麼會發生這種情況 – 2012-08-02 15:16:28