我正在编写一个非常频繁地与web db通信的android应用程序。 那些通信代码片段在后台线程中运行,例如AsyncTask。 如您所知,所有asynctask应检查网络状态以防止设备被阻止。这是我的问题。 检查网络状态的最佳解决方法是什么。 就我而言,我在进入网络层之前检查网络状态。 然后,它获得了很多样板代码..
答案 0 :(得分:0)
我不确定您的要求,但如果您想知道如何检查设备是否已连接到互联网,请使用此代码段
protected boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
} else {
return false;
}
}
启用NETWORK_STATE_ACCESS权限(不确定是否有更多权限,但如果不检查日志cat则应该是这样)
答案 1 :(得分:0)
public static boolean isConnectedToInternet(Context context){
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
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;
}
它将返回布尔值true或false,无论true表示互联网是否连接,false表示互联网不存在。 你需要添加 在用于访问互联网所必需的meanifest文件中。