监测网络状态,离线/在线应用程序的实现 | 您所在的位置:网站首页 › 在线监测网络 › 监测网络状态,离线/在线应用程序的实现 |
AIR与Flex web应用的另一区别在于可以动态监测网络状态,可以让开发者在网络连通或断线时用不同的方式处理程序,在Demo中我将用以下情况来表现AIR的离线与在线应用。 1. 用户在文本框中输入内容。文本框下方的保存按钮会动态显示当前网络状态: (在线)保存与(离线)保存.2. 在用户点击保存按钮时如果网络在线,将对话框内容保存在服务器。3. 如果保存时处于断线状态,将内容保存在本地文件中。4. 当网络恢复时检查本地文件,如果有已经保存的内容,将内容传入服务器。 源代码很简单,不到100行,大家可以在最下方下载。现在我开始讲解 Demo操作方法1. 按装运行demo,如果网络连接正常,你会看到文本框下的按钮为 (在线) 保存。2. 输入任意信息,点击 (在线)保存 。你会看倒信息 “内容已上传服务器”。3. 切断网络。大概3-5秒后你会看到文本框下方按钮变为(离线)保存。4. 点击保存,你会看倒信息“内容已经在本地保存,会在下次连线时自动上传到服务器”。5. 接痛网络,大概3--5秒后你会看倒信息 “缓存内容已上传服务器”。6. Demo结束。 1. 启动应用程序后监控网络状态。我们在 App的CreationComplete()中调用netWorkSyc来监控网络状态。 private function networkSyc():void{//创建一个联接,使用HEAD表示不需要加载玩全部的页面。var request:URLRequest = new URLRequest( “http://www.google.com”);requesthod = “HEAD”; //用url创建监测对象,每3秒检查一次网络状态,如果网络状态发生变化,将结果返回到netWorkStatusHandle()urlMonitor = new URLMonitor(request);urlMonitor.pollInterval = 3000;urlMonitor.addEventListener(StatusEvent.STATUS,netWorkStatusHandle);urlMonitor.start();} //网络状态改变时响应该事件private function netWorkStatusHandle(e:StatusEvent):void{if(urlMonitor.available){//如果有本地文件,假装上传服务器if(this.checkLoaclFile()){//Kevin TODO 上传服务骑this.showAlert(”缓存内容已上传服务器”);}saveBtn.label = “(在线)保存”}else{saveBtn.label = “(离线)保存”}} 上面的networkSyc()方法中我使用了两个类的对象来实现网络监控,URLRequest 和 URLMonitor。我用URLRequest来建立一个连接对象request,连接的地址是www.google.com。然后已request作为构造参数创建URLMonitor对象。我就是靠它来完成对网络状态的监控。 监控原理很简单,当第一次执行networkSyc()时,urlMonitor会尝试连接www.google.com,然后将连接的结果发回到 netWorkStatusHandle(), 如果连接成功,urlMonitor.available会为true,反之为false。接下来每3秒检查一次网络状态,如果发生改变(连接成功变为连接失败或者连接失败变为连接成功),那么将再度触发StatusEvent.STATUS事件,调用netWorkStatusHandle()返回网络状态。 以上就是AIR监控网络的方式,大家如果感兴趣想知道更多URLMonitor的内容,可以在Help中搜索ServiceMonitor,它的sub class就是URLMonitor和SockterMonitor。 Demo中并没有真正在本地保存文件,保存与读取文件的方法我会在下一篇教程–“AIR的文件操作”中教给大家。 源文件下载Demo |
CopyRight 2018-2019 实验室设备网 版权所有 |