以下代码就是判断网络连接的
public boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity == null) {
//TODO
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
这几天做断点续传时,使用到以上代码,发现一些细节问题记录下:
1.通过以上代码判断网络连接之后,最好是让线程sleep 2秒钟,否则马上执行httpClient.execute(request)(即解析request时),可能出现连接主机被拒绝(会报异常)
2.当网络类型为mobile 2G或者3G,断开网络的瞬间,通过以上代码判断网络连接仍然是connected,但是网络输入流已经关闭,再读数据返回-1.(wifi没有出现此问题)
如有不同看法的筒子们,欢迎留言,互相学习!