Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 何时在移动应用程序中检查internet连接_Android_Ios_Mobile_Windows Phone 8_Connection - Fatal编程技术网

Android 何时在移动应用程序中检查internet连接

Android 何时在移动应用程序中检查internet连接,android,ios,mobile,windows-phone-8,connection,Android,Ios,Mobile,Windows Phone 8,Connection,我想知道在移动应用程序中检查互联网连接的推荐做法和最佳做法 在我与队友开发的大多数应用程序中,我们在执行任何需要连接互联网的操作之前检查互联网连接。但我看到许多应用程序在设备与internet断开连接时发出通知 我希望对这个主题有一个清晰的了解,我相信像我这样的许多开发人员在开发应用程序时,对于如何正确地进行此检查感到犹豫 任何帮助或想法都将不胜感激。它总是与我们正在做的项目相关。 如果您只是在执行任何操作时只需要internet连接的应用程序,那么在执行操作之前检查internet连接会更好,

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

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

我希望对这个主题有一个清晰的了解,我相信像我这样的许多开发人员在开发应用程序时,对于如何正确地进行此检查感到犹豫


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

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

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

您可以使用广播接收器处理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);

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

您的应用程序类型完全取决于您的应用程序要求

有时:

1)在执行任何需要的操作之前,我们必须检查互联网连接

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

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


希望有帮助。

理想情况下,您的应用程序应该监控手机网络连接。您的应用可能会选择也可能不会选择对连接更改进行操作。对于iOS,您可以使用Apple提供的示例代码监控网络连接。