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检测网络的更多相关文章
- Android检测网络是否正常代码!
在Android开发中,如果该应用程序需要连接网络请求,那么最好我们先做一个检测网络是否在线的判断,否则程序容易出现卡死或FC等Bug,应该判断如果手机离线则弹出提示让用户检查网络,如果正常则继续执行 ...
- iOS中使用 Reachability 检测网络
iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Reachability都 ...
- iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态
一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...
- android 检测网络是否连接,或者GPS是否可用
很多android程序在打开时,检测网络是否连接,或者GPS是否可用: 1.网络是否连接(包括Wifi和移动网络) // 是否有可用网络 private boolean isNetworkConnec ...
- 教你用Ossim平台检测网络的Shellcode攻击
教你用Ossim平台检测网络的Shellcode攻击行为 教程: http://www.tudou.com/programs/view/-hxTm0q1tDY/ 以下是视频截图: 更多视频内容: 本文 ...
- android 检测网络是否可用
/** * 检测网络是否可用 * * @return */ public boolean isNetworkConnected() { Conne ...
- iOS开发网络篇—Reachability检测网络状态
前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...
- Android 检测网络连接状态
Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...
- iOS检测网络连接状态
官方Demo下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 将Reachab ...
随机推荐
- 你需要知道的九大排序算法【Python实现】源码
#coding: utf-8 #!/usr/bin/python import randomimport math #随机生成0~100之间的数值def get_andomNumber(num): l ...
- [原创作品] 对获取多层json值的封装
今天篇头不废话了,交流加群:164858883 在我们接收后端返回的json数据的时候,在数据缺失的时候,如果直接接收会导致致命错误的发生.可能有些同学会说通常都会有,不用判断直接获取也行.之前我也是 ...
- 【C#通用类】日志记录类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- HtmlParser 2.0 中文乱码问题
对于HTMLParser 2.0 工具包我们需要修改其中的Page.java文件使其适用中文的html文件分析. 主要是把protected static final String DEFAULT_C ...
- 解密UML九中关系
将UML中经常使用的九种关系分为了四组进行解释. 一.组合和聚合解说: 同样:均是指有部分组成总体. 不同:聚合是指能够独立存在的个体组成总体.(弱的拥有关系) 组合存在时间上的关系.总体和部分具有同 ...
- Linux(CentOS 5.5) Redis安装
一,什么是redis redis是一个key-value存储系统. 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset ...
- Java基础知识强化51:经典排序之桶排序(BucketSort)
1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析 ...
- VritualBox 中Debian安装tool
VritualBox 中Debian安装tool 环境 Debian 8 VirtualBox 配置Debian的源 #163源 deb http://mirrors.163.com/debian/ ...
- 新Android学习计划
最近,在学习Android Design Support Library提供的新控件过程中,我感受到了原来的学习方式的缺点: 学习内容过于随意,在工作过程中碰到的新问题都想去掌握,心血来潮就想写一篇相 ...
- RDD 重新分区,排序 repartitionAndSortWithinPartitions
需求:将rdd数据中相同班级的学生分到一个partition中,并根据分数降序排序. 此实例用到的repartitionAndSortWithinPartitions是Spark官网推荐的一个算子,官 ...