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检测网络的更多相关文章

  1. Android检测网络是否正常代码!

    在Android开发中,如果该应用程序需要连接网络请求,那么最好我们先做一个检测网络是否在线的判断,否则程序容易出现卡死或FC等Bug,应该判断如果手机离线则弹出提示让用户检查网络,如果正常则继续执行 ...

  2. iOS中使用 Reachability 检测网络

    iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测.   写本文的目的 了解Reachability都 ...

  3. iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态

    一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...

  4. android 检测网络是否连接,或者GPS是否可用

    很多android程序在打开时,检测网络是否连接,或者GPS是否可用: 1.网络是否连接(包括Wifi和移动网络) // 是否有可用网络 private boolean isNetworkConnec ...

  5. 教你用Ossim平台检测网络的Shellcode攻击

    教你用Ossim平台检测网络的Shellcode攻击行为 教程: http://www.tudou.com/programs/view/-hxTm0q1tDY/ 以下是视频截图: 更多视频内容: 本文 ...

  6. android 检测网络是否可用

    /**     * 检测网络是否可用     *      * @return     */    public boolean isNetworkConnected() {        Conne ...

  7. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  8. Android 检测网络连接状态

    Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...

  9. iOS检测网络连接状态

    官方Demo下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 将Reachab ...

随机推荐

  1. puppet aix之自动化用户管理

    一.    用户组的管理 (一)   Puppet组管理特性 1.   manages_aix_lam 用来管理AIX的LAM(Loadable Authentication Module)系统. 2 ...

  2. OC与JS互相调用

    近期项目中要用到html5来实现.涉及到OC调用JS,以及JS调用OC的方法.这里把遇到的问题以及实现方法介绍一下. // // ViewController.h // OC_And_JS // // ...

  3. c# WPF 项目优化

    业务流程图 优化前后对比: 优化过程: 1. 界面刷新,特别是表格刷新 把ListView.DataContext  = DataSet 这些代码替换成以下: public static void S ...

  4. Linux进程调度与切换

    2016-04-15 张超<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.分析 进程调度的时机与进程 ...

  5. nginx安装(正式)

    一.安装说明 系统环境:CentOS Linux release 7.2.1511 (Core) 系统内核:3.10.0-327.el7.x86_64软件:nginx-1.10.1.tar.gz其他所 ...

  6. 3.Android Studio系列教程3——快捷键

    原文链接:http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/   一.更新Android Studio 项目根目录的 ...

  7. 数据库元数据分析Demo

    核心类:DatabaseMetaData.ResultSetMetaData 1 System.err.println("********************************** ...

  8. 自定义标签(JSTL)

    自定义标签的步骤: 1.确定需求,如:用<my:date/>输出当前时间 2.编写Java类:需要实现实现接口javax.servlet.jsp.tagext.JspTag 具体的接口为: ...

  9. 字符串编码---hash函数的应用

    之前就听说过有个叫做hash表的东西,这段时间在上信息论与编码,也接触了一些关于编码的概念,直到今天做百度之星的初赛的d题时,才第一次开始学并用hash 一开始我用的是mutimap和mutiset, ...

  10. Cocos2DX新手入门笔记索引

    01--从根源种子CCNode说起 02—从Cocos2DX视角看游戏组成 03--理解HelloWorld结构 04--简单菜单使用 05--简单场景切换与精灵创建 06--触摸事件响应 07--动 ...