我有一个服务,可以逐个下载文件列表。但是,当互联网连接断开或断开连接时,下载卡住了。我做了一些关于互联网连接检查的研究,并找到了一些利用ConnectivityManager类的例子。
但是,仅当手机使用WIFI或MOBILE连接到网络时,ConnectivityManager类似乎才会检查。它不会检查是否确实存在互联网访问。因此,您可以连接到网络,但仍然无法使用HTTP进行浏览。
除了ConnectivityManager之外还有什么方法吗?
我正在使用以下替代方案:
public boolean isOnline(){
try{
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
urlc.connect();
urlc.setConnectTimeout(1000 * 2);
if(urlc.getResponseCode() == 200){
return true;
}else{
}
}catch(Exception e){
return false;
}
return true;
}
这种方法的问题在于它太慢了。因为我在一个while循环中检查(文件正在下载),由于调用isOnline(),下载速度降低了:
while(..something){
if(!isOnline())
killService();
return;
}
任何其他方式这样做或改进那个
修改: 我正在考虑运行一个线程来检查下载是否在指定的时间内停留,例如20秒或30秒,以及是否停止服务(意味着互联网已关闭)。
int downloadProgress;
Runnable checkNet = new Runnable(){
public void run(){
// code to check download using Timer - need help implementing this
}
};