我正在加载一组要下载的文件,并且我为这些文件中的每一个启动了一个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