首页 > 代码库 > AIR检测网络

AIR检测网络

    package com.juyou.util.net      {          import flash.events.StatusEvent;          import flash.net.URLRequest;                    import air.net.URLMonitor;          /**          * 网络监听          *           */          public class NetChecker          {              private static var request:URLRequest = new URLRequest("http://www.baidu.com");              private static var monitor:URLMonitor;              /**检测间隔时间*/              public static var _interval:Number = 10000;              private static var available:Boolean = true;              private static var observerList:Vector.<INetObserver> = new Vector.<INetObserver>();              public function NetChecker()              {                                }              /**              * 注册观察者对象              * @param obj    观察者对象              */              public static function attach(obj:INetObserver):void              {                  if(observerList.indexOf(obj) == -1)                  {                      observerList.push(obj);                  }              }                            /**              * 删除观察者对象              * @param obj    观察者对象              */              public static function detach(obj:INetObserver):void{                  var index:int = observerList.indexOf(obj);                  if(index == -1)                      return;                  observerList.splice(index,1);              }                            /**              * 通知所有注册的观察者对象              */              private static function nodifyObservers():void{                  for each(var obj:INetObserver in observerList)                  {                      obj.updateNetAvailable(available);                  }              }                            /**              * 开始监听网络状况               *               */              public static function monitorNetwork():void              {                  if(!monitor)                      monitor = new URLMonitor(request);                  monitor.pollInterval = _interval;                  monitor.addEventListener(StatusEvent.STATUS,onStatusHandler);                  monitor.start();              }                            /**              * 设置监听网络间隔               * @param val              *               */              public static function set interval(val:Number):void              {                  if(_interval == val)return;                  _interval = val;                  if(monitor && monitor.running)                  {                      monitor.stop();                      monitor.pollInterval = _interval;                      monitor.start();                  }              }                            public static function get interval():Number              {                  return _interval;              }                            /**              * 停止监听网络状态               *               */              public static function stopMonitor():void              {                  if(monitor)                      monitor.stop();              }                            /**              * 判断当前网络是否可用               * @return               *               */              public static function get networkAvailable():Boolean              {                  return available;              }                            private static function onStatusHandler(e:StatusEvent):void              {      //          trace( ">>onStatusEvent::evt.code=" + e );                  if(e.level == "status")                  {                      var flag:Boolean = false;                      if(monitor.available && !available)                      {                          trace("网络已连接");                          available = true;                          flag = true;                      }                      else if(!monitor.available && available)                      {                          available = false;                          trace("没有检测到网络");                          flag = true;                      }                                            if(flag)                      {                          nodifyObservers();                      }                  }                                    }                        }      }      package      {          public interface INetObserver          {              function updateNetAvailable(ava:Boolean):void;          }      }  

 

AIR检测网络