Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 经常检查互联网连接_Android_Angularjs_Ionic Framework - Fatal编程技术网

Android 经常检查互联网连接

Android 经常检查互联网连接,android,angularjs,ionic-framework,Android,Angularjs,Ionic Framework,我正在用ionic框架开发一个Android应用程序,需要检查互联网连接,但要稳定。例如,如果用户登录后没有连接,我想显示一条消息或任何消息。我曾经想过 <div class="bar bar-subheader" id="alerta_no_internet" ng-show="!online"> <p>Not connected to Internet </p> </div 未连接到Internet 有几种方法可以做到这一点: 您可以在服

我正在用ionic框架开发一个Android应用程序,需要检查互联网连接,但要稳定。例如,如果用户登录后没有连接,我想显示一条消息或任何消息。我曾经想过

<div class="bar bar-subheader" id="alerta_no_internet" ng-show="!online">
    <p>Not connected to Internet </p>
</div

未连接到Internet


有几种方法可以做到这一点:

  • 您可以在服务器上存储资产(可能是
    1px x 1px
    GIF
    图像),并不断对此进行轮询(每
    x
    秒连续请求一次)。当然,您要确保此图像未被缓存。如果请求失败,您可以假定网络不可用。这很容易实现,但效率不高,因为轮询通过网络发送大量HTTP头
  • 这要高效得多-在客户端和服务器中实现
    WebSocket
    连接,并在打开应用程序时打开套接字。如果插座断开,您可以显示
    连接丢失
    消息。这不需要重复发送HTTP请求。这是更有效的,但需要更多的工作来实现这一点 您可以在Ionic中为其中任何一个编写服务

    最简单地说,选项1可以是:

    setInterval(ajaxCall, 3000); //3000 MS == 3 sec
    
    function ajaxCall() {
      $.ajax('/testConnectivityUrl').then(function(response) {
        console.log("Still connected");
      }, function(err) {
        console.log("Lost connection");
      }
    }
    

    我已经使用了jQuery,但您可以使用vanilla JS或Angular或Ionic服务或工厂来实现这一点。

    有几种方法:

  • 您可以在服务器上存储资产(可能是
    1px x 1px
    GIF
    图像),并不断对此进行轮询(每
    x
    秒连续请求一次)。当然,您要确保此图像未被缓存。如果请求失败,您可以假定网络不可用。这很容易实现,但效率不高,因为轮询通过网络发送大量HTTP头
  • 这要高效得多-在客户端和服务器中实现
    WebSocket
    连接,并在打开应用程序时打开套接字。如果插座断开,您可以显示
    连接丢失
    消息。这不需要重复发送HTTP请求。这是更有效的,但需要更多的工作来实现这一点 您可以在Ionic中为其中任何一个编写服务

    最简单地说,选项1可以是:

    setInterval(ajaxCall, 3000); //3000 MS == 3 sec
    
    function ajaxCall() {
      $.ajax('/testConnectivityUrl').then(function(response) {
        console.log("Still connected");
      }, function(err) {
        console.log("Lost connection");
      }
    }
    

    我用过jQuery,但你可以用vanilla JS或Angular或Ionic服务或工厂来实现这一点。

    我对Ionic框架不太了解,但Android框架中的
    ConnectionManager确实发出了一种声音。您可以实现
    BroadcastReceiver
    来监听这些更改:

    <receiver android:name=".ConnectivityReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>
    
    确保在
    清单中声明internet和网络状态权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    
    
    请注意,连接更改可能很频繁,因此监控这些更改的成本可能很高。根据最佳实践,您应该仅在需要时启用:

    通常只需检查互联网连接就足够了 在开始更新之前,如果没有更新,则进一步暂停 更新,直到连接恢复


    我对爱奥尼亚框架了解不多,但Android框架中的
    ConnectivityManager
    确实发出了一种声音。您可以实现
    BroadcastReceiver
    来监听这些更改:

    <receiver android:name=".ConnectivityReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>
    
    确保在
    清单中声明internet和网络状态权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    
    
    请注意,连接更改可能很频繁,因此监控这些更改的成本可能很高。根据最佳实践,您应该仅在需要时启用:

    通常只需检查互联网连接就足够了 在开始更新之前,如果没有更新,则进一步暂停 更新,直到连接恢复


    等待因为我可以经常运行一个函数?是的。在最简单的级别上,您可以运行如下函数:
    setInterval(ajaxCall,3000)//3000毫秒==3秒函数ajaxCall(){//在这里做AJAX工作}
    等等!,因为我可以经常运行一个函数?是的。在最简单的级别上,您可以运行如下函数:
    setInterval(ajaxCall,3000)//3000毫秒==3秒函数ajaxCall(){//在这里做AJAX工作}