我有一个关于 Android 中 wifi 连接的具体问题。我正在开发一个项目,该项目正在从网络服务器下载一些数据,并且每次在开始同步之前我都在检查互联网连接,如下所示:
public static boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
public static boolean chkNetworkStatus(Context context) {
boolean result = false;
new Thread() {
@Override
public void run() {
for(int i=0;i<3;i++){
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest);
responded = true;
} catch (Exception e) {
responded = false;
}
}
}
}.start();
boolean isOnline = isOnline(context);
if(responded && isOnline){
result = true;
} else {
result = false;
}
Log.e("","responded : "+responded);
return result;
}
但是在这种情况下,当我仍然连接到 wifi 并且我正在走路(失去连接)并按下同步按钮时,它仍然返回 true,因为我已连接,但实际上它什么也没做。
无论如何我可以检测到这一点,或者我应该在我正在使用connectionTimeOut
的类中使用函数?HttpURLConnection