【问题标题】:Continuously checking for network connectivity state持续检查网络连接状态
【发布时间】:2019-03-24 00:03:38
【问题描述】:

我正在构建一个在线游戏,所以我需要手机一直检查网络连接.. 所以我可以通知用户他的 Wifi 或移动数据出了问题

【问题讨论】:

  • 用于注册广播接收器以获取通知
  • 为什么问题标记为android?如果是在线游戏,则独立于您用来玩它的平台。

标签: java android network-connection


【解决方案1】:

使用它来检查您的 Internet 连接,并使用计时器或处理程序和 runnable 定期检查它

public static boolean isConnectedToInternet(){
    ConnectivityManager cm =
            (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = null;
    if (cm != null) {
        activeNetwork = cm.getActiveNetworkInfo();
    }
    // it need to connect to wifi/LTE and can access the internet
    return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}

可运行

Runnable mStatusChecker = new Runnable() {
    @Override
    public void run() {
        try {
            // check internet connection
        }finally {
            mHandler.postDelayed(mStatusChecker, STATUS_CHECK_INTERVAL);
        }
    }
};

【讨论】:

    【解决方案2】:

    您不需要在 Android 上进行轮询,您可以设置一个广播接收器,该接收器将在 android 7 (API 24) 的连接状态发生任何变化时被调用

    只要上下文有效,应用程序将收到CONNECTIVITY_ACTION 广播,如果他们将BroadcastReceiver 注册到Context.registerReceiver()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多