【问题标题】:When to check internet connection in Mobile Applications何时在移动应用程序中检查互联网连接
【发布时间】:2014-06-16 07:13:41
【问题描述】:

我想知道在移动应用程序中检查互联网连接的推荐和最佳做法。

在我与队友开发的大多数应用程序中,我们会在任何需要互联网连接的操作之前检查互联网连接。但我看到许多应用程序会在设备与互联网断开连接时发出通知。

我想对这个话题有一个清晰的了解,我相信很多像我这样的开发者在开发应用程序时会犹豫如何正确地进行这个检查。

任何帮助或想法将不胜感激。

【问题讨论】:

  • 理想情况下,您的应用应监控电话网络连接。您的应用可能会或可能不会选择对连接更改采取行动。对于 iOS,您可以使用 Apple 提供的 Reachability 示例代码监控网络连接。

标签: android ios mobile windows-phone-8 connection


【解决方案1】:

您可以使用广播接收器来处理 wifi 更改。

收件人代码:

private BroadcastReceiver WifiStateChangedReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
                WifiManager.WIFI_STATE_UNKNOWN);

        switch (extraWifiState) {
            case WifiManager.WIFI_STATE_DISABLED: {
                handler.sendEmptyMessage(DATA_DISCONNECTED);
            }
            break;
            case WifiManager.WIFI_STATE_DISABLING: {
            }
            break;
            case WifiManager.WIFI_STATE_ENABLED: {
                handler.sendEmptyMessage(DATA_CONNECTED);
            }
            break;
            case WifiManager.WIFI_STATE_ENABLING: {
            }
            break;
            case WifiManager.WIFI_STATE_UNKNOWN: {
            }
            break;
        }
    }
};

注册接收者:

this.registerReceiver(this.WifiStateChangedReceiver,
            new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));

要检查移动数据连接更改您可以使用 TelephonyManager:

PhoneStateListener pslCell = new PhoneStateListener() {
        @Override
        public void onDataConnectionStateChanged(int state) {
            switch (state) {
                case TelephonyManager.DATA_DISCONNECTED: {
                    handler.sendEmptyMessage(DATA_DISCONNECTED);
                }
                break;
                case TelephonyManager.DATA_SUSPENDED: {
                    handler.sendEmptyMessage(DATA_CONNECTED);
                }
                break;
            }
        }
    };

    telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    telephonyManager.listen(pslCell, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

我建议您将网络状态存储在静态变量中。此外,您需要在每次应用程序启动时检查网络状态。

【讨论】:

    【解决方案2】:

    它总是与我们正在做的项目有关。 如果您只是在执行任何操作时只需要互联网连接的应用程序,那么在执行操作之前检查互联网连接会更好,它将消除每次检查互联网连接的开销 我更喜欢这种方法

    但是如果我们真的每次都需要全网连接,如果我们需要加载最新的新闻或聊天应用程序,我们需要每次都通知。 为此,我们必须使用每个移动平台的适当连接 API Android为此提供连接广播接收器

    【讨论】:

      【解决方案3】:

      这完全取决于您的应用程序要求您的应用程序是什么。

      有时:

      1)我们必须先检查互联网连接,然后再执行任何需要它的操作。

      2)我们会在特定定义的时间间隔后定期检查互联网连接。

      3) 我们需要立即响应互联网连接状态,因此我们的应用程序会不断检查它并立即向我们发送互联网失败或成功的通知状态,以便我们能够处理我们的应用程序在这种情况下场景。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2019-08-30
        • 1970-01-01
        • 1970-01-01
        • 2014-05-21
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多