2013-01-12 41 views
0

我正在編寫一個更新AppWidget中的textview的服務。這是關於閱讀RSS並顯示文本。因此,如果互聯網未在設備上激活,我需要將文字設置爲「無法上網」。所以在服務的onStart()方法我把服務中的網絡編程

ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
if(!netInfo) 
{ 
try-catch block to fetch XML using XMLPULLPARSER and set the textview 
} 
else 
set the textview using remoteview that there is no internet 

但這是行不通的。該服務被後臺ANR殺死。如何檢查網絡狀態?

回答

1

儘管Service被設計用於在後臺執行操作,但默認情況下它仍然在ui線程中運行。如果你想在服務中執行長時間運行的操作,你必須創建一個工作線程。或者您可以使用爲您創建它的IntentService

+0

我試圖在服務內部創建一個新的線程,但是我得到一個錯誤,該服務超時並重新安排。如果服務甚至沒有被調用,我將如何能夠運行線程? – dil33pm