在Android应用中检查网络状态的最佳方法是什么

时间:2015-07-12 12:35:52

标签: android android-asynctask

我正在编写一个非常频繁地与web db通信的android应用程序。 那些通信代码片段在后台线程中运行,例如AsyncTask。 如您所知,所有asynctask应检查网络状态以防止设备被阻止。这是我的问题。 检查网络状态的最佳解决方法是什么。 就我而言,我在进入网络层之前检查网络状态。 然后,它获得了很多样板代码..

2 个答案:

答案 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文件中。