检查Internet访问?

时间:2011-11-14 04:23:47

标签: android

我有一个服务,可以逐个下载文件列表。但是,当互联网连接断开或断开连接时,下载卡住了。我做了一些关于互联网连接检查的研究,并找到了一些利用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
    }
};

0 个答案:

没有答案