立即检查Internet连接

时间:2012-03-23 09:26:27

标签: android

是否有任何广播接收器(或服务)持续检查应用程序期间的互联网连接是否保持运行。因此,每当有松散的连接时,我都会收到一些松散连接的消息。 我知道ConnectivityManager

private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }

是我们可以检查是否与互联网连接的类?但我需要立即检查......

4 个答案:

答案 0 :(得分:1)

此尝试代码正在运行

public static boolean checkConnection(Context mContext) {

        NetworkInfo info = ((ConnectivityManager) mContext
                .getSystemService(Context.CONNECTIVITY_SERVICE))
                .getActiveNetworkInfo();
        if (info == null || !info.isConnected()) {
            return false;
        }
        if (info.isRoaming()) {
            return true;
        }
        return true;
    }

答案 1 :(得分:0)

您可以使用特定操作添加广播:

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionReceiver, filter);

答案 2 :(得分:0)

使用ACCESS_NETWORK_STATE权限,只需创建一个连接的方法

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

答案 3 :(得分:0)

直到您正在开发一个显示网络状态的应用程序,然后尝试使用ConnectivityManager和其他广播进行抢劫。

如果是这种情况(通常是这种情况),你需要做一些基于网络的操作,比如从任何服务器获取一些数据。

我不去检查网络状态 但是当你发出一个告诉我“嘿网络不可用”的请求时,依赖于UnknownHostException或RuntimeException等引发抛出。

在做api请求之前,我认为这比做网络检查更好。

  1. 无需额外的连接管理器代码。

  2. 加上如果案例开发人员保存连接的值不可用而不更新它并在一段时间后使用它。所以它容易出错

  3. 在需要的时候就像检查一样,不会影响其他操作。

  4. 主要的一个案例是,对于非常积极的情况,设备永远不会丢失数据 连接。为什么要运行一段没用的代码。

  5. 这只是我的偏好,我不会质疑ConnectivityManager的存在:)。

    希望无论是在这个场景还是在其他场景中它都会有所帮助。