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 ...
随机推荐
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- JAVA并发七(多线程环境中安全使用集合API)
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...
- springMVC学习(1)
spring mvc的位置: springMVC只是spring的一个模块: 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:DispatcherServlet请求Ha ...
- prepareStatement的用法和解释
1. PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2. 使用 Statement 对象.在对数据库只执行一次性存取的时侯,用 Statement ...
- 浅析NSTimer & CADisplayLink内存泄露
偶得前言 NSRunLoop与定时器 - invalidate的作用 我们如何解决? 偶得前言 本篇文章中我们主要谈谈NSTimer\CADisplayLink在使用过程中牵扯到内存泄露的相关问题及解 ...
- 自定义listView添加滑动删除功能
今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个 ...
- djano-cms学习笔计(一)
开放源码的内容管理系统,基于Web框架Django的. 优势如下 高度可扩展的插件系统,可让您自由地构建各种内容的网站. 前端编辑直接更改您的网站上的内容.工程的所有插件. 感谢可读的网址的页面结构是 ...
- Linux中的小程序—— 进度条
在说正事之前,首先科普一下在什么是回车什么是换行? 我们通常所说的回车就是从一行的末尾跳到另一行的开头,但事实上这却是由回车和换行两个动作所完成的,也就是键盘上<enter>所完成的工作. ...
- 图片变换 矩阵 Bitmap Matrix
Matrix矩阵介绍 在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,内部就是个一维数组,内部有9个元素:可以通过setValues( float[])进 ...
- (转)巧用clear:both
我们在制作网页中用div+css或者称xhtml+css都会遇到一些很诡异的情况,明明布局正确,但是整个画面却混乱起来了,有时候在IE6下看的很正常的,到ie7或者火狐下看时,就一片混乱了,无论怎么计 ...