麻球开发者平台,麻球开发者大赛

只看楼主 楼主

艾睿会员有特权,登陆后广告自动屏障。
现在就花5秒钟免费注册!更有好礼相送!

Adobe AIR 迷你教程 -- 监测网络状态,离线/在线应用程序的实现

前两篇发到 AIR讨论区了,发到这里似乎更合适。

给出前两篇的连接先:

1. Adobe AIR迷你教程 -- 在Flex builder3 中创建、发布AIR程序以及 AIR程序的安装运行

2.Adobe AIR迷你教程 -- 使用自定义窗口以及对窗口的移动,缩放,关闭操作(附加关闭程序动画,循环背景设置)

AIR与Flex web应用的另一区别在于可以动态监测网络状态,可以让开发者在网络连通或断线时用不同的方式处理程序,在Demo中我将用以下情况来表现AIR的离线与在线应用。

1. 用户在文本框中输入内容。文本框下方的保存按钮会动态显示当前网络状态: (在线)保存与(离线)保存.
2. 在用户点击保存按钮时如果网络在线,将对话框内容保存在服务器。
3. 如果保存时处于断线状态,将内容保存在本地文件中。
4. 当网络恢复时检查本地文件,如果有已经保存的内容,将内容传入服务器。

源代码很简单,不到100行,大家可以在最下方下载。现在我开始讲解


1. 启动应用程序后监控网络状态。


Demo中我在App的CreationComplete()中调用netWorkSyc()来监控网络状态。

private function networkSyc():void{

//创建一个联接,使用HEAD表示不需要加载玩全部的页面。
var request:URLRequest = new URLRequest( "http://www.google.com");
request.method = "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。

PS: demo操作方法

1. 按装运行demo,如果网络连接正常,你会看到文本框下的按钮为 (在线) 保存。
2. 输入任意信息,点击 (在线)保存 。你会看倒信息 “内容已上传服务器”。
3. 切断网络。大概3-5秒后你会看到文本框下方按钮变为(离线)保存。
4. 点击保存,你会看倒信息“内容已经在本地保存,会在下次连线时自动上传到服务器”。
5. 接通网络,大概3--5秒后你会看倒信息 “缓存内容已上传服务器”。
6. Demo结束。




Demo中并没有真正在本地保存文件,保存与读取文件的方法会在下一篇教程--“AIR的文件操作"

原文: http://www.flextheworld.com/?p=74
[本帖最后由 koalacui 于 2009-03-24 16:54:48 编辑]

(您是游客)您没有权限查看附件

kevin.luo.sl的签名

评分

举报 使用道具 TOP

只看该用户 沙发!

Re:Adobe AIR 迷你教程 -- 监测网络状态,离线/在线应用程序的实现

刚刚进行了一下演示.真不错,特别是那个拉伸的.

评分

举报 使用道具 TOP

只看该用户 板凳

学习一下

评分

举报 使用道具 TOP

只看该用户 地板

支持,谢谢了,学习一下!

评分

举报 使用道具 TOP

只看该用户 #4

学习中   谢谢LZ分享

评分

举报 使用道具 TOP

只看该用户 #5

界面就是好。呵呵。多谢多谢

评分

举报 使用道具 TOP

只看该用户 #6

学习中   谢谢LZ分享

评分

举报 使用道具 TOP

只看该用户 #7

谢谢,,不错的东西

评分

举报 使用道具 TOP

只看该用户 #8

好东西正在学习~

评分

举报 使用道具 TOP

只看该用户 #9

收藏了先

评分

举报 使用道具 TOP

只看该用户 #10

评分

举报 使用道具 TOP

只看该用户 #11

刚刚进行了一下演示.真不错

评分

举报 使用道具 TOP

只看该用户 #12

谢谢分享

评分

举报 使用道具 TOP

只看该用户 #13

我必须说说我的看法:

刚才下了拉伸窗体的那个小程序,实在是不错啊。

评分

举报 使用道具 TOP

只看该用户 #14

学习中

评分

举报 使用道具 TOP

只看该用户 #15

好东西 谢谢楼主

评分

举报 使用道具 TOP

只看该用户 #16

好东西啊
离线研究中

评分

举报 使用道具 TOP

只看该用户 #17

收藏了先

评分

举报 使用道具 TOP

只看该用户 #18

研究研究
soft118的签名
坚决贯彻-"没事露一露,提高知名度——艾睿我看贴我回贴宣言"

评分

举报 使用道具 TOP

只看该用户 #19

haoqinghu的签名
大家互相学习!!!

评分

举报 使用道具 TOP

只看该用户 #20

不错的分享

评分

举报 使用道具 TOP

只看该用户 #21

eeggoo

评分

举报 使用道具 TOP
艾睿会员有特权,登陆后广告自动屏障。现在就花5秒钟免费注册!更有好礼相送!