在我的Android應用程序的服務類中調用REST WebService創建NetworkOnMainThreadException
。Android:在服務中使用網絡
我明白爲什麼在Activity中引發這個異常:通過網絡同步獲取某些東西是一個非常糟糕的做法,但我很驚訝地發現服務類中出現同樣的錯誤。 所以我的問題是:
- 在這個特定的情況下,我應該使用StrictMode.setThreadPolicy()
來允許這個調用。 (而對於那些讀這一點,因爲他們已經在活動中遇到這個錯誤,不要使用StrictMode隱藏這個錯誤,使用的AsyncTask)
- 或者我應該使用的AsyncTask?在那種情況下,這裏有什麼問題?線程上的服務不是與Activity的線程分開的嗎?
感謝您的回答,所以這就是我所懷疑的。我認爲,因爲它們用於後臺任務服務默認會在另一個線程上,但事實並非如此。 其實我使用該服務來管理對'MediaPlayer'的調用,所以在主線程中聽起來不會有問題,因爲'prepareAsync()'允許我優雅地管理它的行爲。 我只需要修改我的服務,以便使用'AsyncTask'來獲取流網址。 – Teovald 2012-08-09 10:51:20
好的答案,也有可用的材料,可以幫助您瞭解如何有效地使用網絡,以確保您的應用程序得到優化。 http://developer.att.com/developer/forward.jsp?passedItemId=7200042 – 2012-08-13 13:57:07