我正在加載一組要下載的文件,並且我爲這些文件中的每一個啓動了一個IntentService。問題在於Internet連接問題,如設備斷開連接,我將不得不清除或停止IntentService的隊列處理。停止/清除互聯網關閉時的IntentService隊列?
在我的代碼有一個while循環中的文件被下載。其中的這個循環運行的條件是:檢查Internet連接,我已經用下面的代碼完成:
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm != null){
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
return false;
}
我的循環類同於以下內容:
while(.. , isOnline()){
/// Download file
}
如果我現在正在隊列中下載一個文件,如果互聯網停止運行,循環將不再運行,並且該文件的IntentService將停止,但現在如果互聯網返回,下載將從隊列中的下一個文件開始,忽略最後一個文件我們無法下載。如何清除IntentService隊列或使IntentService隊列從其離開的位置恢復下載。
感謝您的回答。你可以給我一個鏈接到IntentService在Android平臺上的實現,因爲我似乎無法在任何地方找到它! – bytebiscuit
http://www.google.com/codesearch#cZwlSNS7aEw/frameworks/base/core/java/android/app/IntentService.java – CommonsWare
所以我打算在這裏,這LinkedBlockQueue將包含線程和這個隊列將被控制一個'最高'的線程,所有這些都包含在服務類中。所以現在如果我有10個文件,我需要啓動存儲在這個隊列中的10個線程,並且控制是最高線程將按順序運行。如果一個線程檢測到互聯網關閉,最高線程將被通知,並且最高線程將使用SharedPreferences記錄下載的文件並自行終止並清除隊列。 – bytebiscuit