(仅限 AIR)
air.net
public dynamic class ServiceMonitor
继承ServiceMonitor Inheritance EventDispatcher Inheritance Object
子类 SocketMonitor, URLMonitor

运行时版本: AIR 1.0

ServiceMonitor 类实现用于监视网络服务的状态和可用性的框架。ServiceMonitor 类作为所有其他服务监视器的基类。

若要在 JavaScript 代码中使用此类,请加载 ServiceMonitor.swf 文件,如下所示:

<script src="ServiceMonitor.swf" type="application/x-shockwave-flash">



公共属性
 属性定义方
  AIR-only available : Boolean
当前是否将服务视为“可用”。初始值为 false,直至状态检查将该属性设置为 true,或者该属性被显式初始化为 true。通常,此属性是由子类或专用函数中的 checkStatus() 实现设置的,但是,如果应用程序具有与服务可用性有关的独立信息(例如,请求刚刚成功或失败),则可以显式设置该属性。
ServiceMonitor
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  AIR-only lastStatusUpdate : Date
[只读 (read-only)] 上次更新状态的时间。
ServiceMonitor
  AIR-only pollInterval : Number
服务器的轮询间隔(以毫秒为单位)。
ServiceMonitor
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  AIR-only running : Boolean
[只读 (read-only)] 是否已启动监视器。
ServiceMonitor
公共方法
 方法定义方
  
创建 ServiceMonitor 对象。
ServiceMonitor
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
AIR-only makeJavascriptSubclass(constructorFunction:Object):void
[静态] 将公共 ServiceMonitor 方法添加到 JavaScript 构造函数的原型中。
ServiceMonitor
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
  
启动服务监视器。
ServiceMonitor
  
停止监视服务。
ServiceMonitor
  
返回指定对象的字符串表示形式。
ServiceMonitor
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
  
检查服务状态。
ServiceMonitor
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  指示服务状态已更改。ServiceMonitor
属性详细信息
AIR-only available属性
available:Boolean  [读写]

运行时版本: AIR 1.0

当前是否将服务视为“可用”。

初始值为 false,直至状态检查将该属性设置为 true,或者显式将该属性初始化为 true

通常,此属性是由子类或专用函数中的 checkStatus() 实现设置的,但是,如果应用程序具有与服务可用性有关的独立信息(例如,请求刚刚成功或失败),则可以显式设置该属性。



实现
    public function get available():Boolean
    public function set available(value:Boolean):void
AIR-only lastStatusUpdate属性 
lastStatusUpdate:Date  [只读 (read-only)]

运行时版本: AIR 1.0

上次更新状态的时间。



实现
    public function get lastStatusUpdate():Date
AIR-only pollInterval属性 
pollInterval:Number  [读写]

运行时版本: AIR 1.0

服务器的轮询间隔(以毫秒为单位)。

如果为零,则不定期轮询服务器,而仅在调用 start() 后和网络状态发生更改时立即轮询。

如果服务状态已更改(不是在每次轮询间隔时),则 ServiceMonitor 对象只调度 status 事件。如果网络连接发生更改(不管轮询间隔如何),该对象也会调度 status 事件。

默认值为 0.



实现
    public function get pollInterval():Number
    public function set pollInterval(value:Number):void
AIR-only running属性 
running:Boolean  [只读 (read-only)]

运行时版本: AIR 1.0

是否已启动监视器。



实现
    public function get running():Boolean
构造函数详细信息
AIR-only ServiceMonitor()构造函数
public function ServiceMonitor()

运行时版本: AIR 1.0

创建 ServiceMonitor 对象。

通常会从此类派生子类以监视特定的服务类型。

此类专用于 JavaScript(来自 HTML 应用程序内容),如 makeJavascriptSubclass() 方法的说明所述。

在创建 ServiceMonitor 对象(或子类对象)后,调用 start() 方法可开始监视服务的状态。

与 Timer 对象一样,调用方应保持对 ServiceMonitor 对象的引用。否则,运行时会删除该对象并结束监视。

方法详细信息
AIR-only checkStatus()方法
protected function checkStatus():void

运行时版本: AIR 1.0

检查服务状态。

用于检查服务状态的子类覆盖方法。

通常,此方法将启动网络操作,该操作的完成或失败将导致设置 available 属性。

通过在“专用函数”对象中定义 checkStatus() 方法,JavaScript 代码可以专用此方法。

AIR-only makeJavascriptSubclass()方法 
public static function makeJavascriptSubclass(constructorFunction:Object):void

运行时版本: AIR 1.0

将公共 ServiceMonitor 方法添加到 JavaScript 构造函数的原型中。

将函数添加到 JavaScript 构造函数的原型,以将公共 ServiceMonitor 函数进一步应用到 ServiceMonitor 对象。此类近似于 ActionScript 基类的常规 JavaScript 子类。

专用 ServiceMonitor 的 JavaScript 类如下所示:

// JavaScript Constructor function
     function MyHTTPMonitor(url, method)
     {
         // "that" variable makes "this" available in closures below
         var that = this;
         // Required initialization of the service monitor, returns the actual ServiceMonitor object.
         this.monitor = this.initServiceMonitor();
         // Initializes URLStream and event handlers.
         this._urlStream = new air.URLStream();
         this._urlRequest = new air.URLRequest(url);
         if (method)
         {
             this._urlRequest.method = method;
         }
         else
         {
             this._urlRequest.method = "GET";
         }
         function onStatus(event) {
             that.monitor.available = Number(event.status) == 200;
             that._urlStream.close();
         }
         function onError(event)
         {
             that.monitor.available = false;
             that._urlStream.close();
         }
         this._urlStream.addEventListener(air.HTTPStatusEvent.HTTP_RESPONSE_STATUS, onStatus);
         this._urlStream.addEventListener(air.SecurityErrorEvent.SECURITY_ERROR, onError);
         this._urlStream.addEventListener(air.IOErrorEvent.IO_ERROR, onError);
     }
          // Augment JavaScript prototype with public methods from ServiceMonitor
     air.ServiceMonitor.makeJavascriptSubclass(MyHTTPMonitor);
          // Implement specializer functions, just as you would when subclassing a JavaScript class
     MyHTTPMonitor.prototype.checkStatus = function()
     {
         air.trace('OVERRIDDEN checkStatus!', this);
         this._urlStream.load(this._urlRequest);
     }

使用 JavaScript 类:

var httpMon = new MyHTTPMonitor('http://www.adobe.com')

确保用 script 标签加载 AIRAliases.js 和 ServiceMonitor.swf 文件。

参数

constructorFunction:Object — JavaScript 对象的 prototype 属性。例如,如果要用作专用函数对象的 JavaScript 对象名为 MyHTTPMonitor,请传递 MyHTTPMonitor.prototype 作为此参数的值。

AIR-only start()方法 
public function start():void

运行时版本: AIR 1.0

启动服务监视器。

AIR-only stop()方法 
public function stop():void

运行时版本: AIR 1.0

停止监视服务。

AIR-only toString()方法 
override public function toString():String

运行时版本: AIR 1.0

返回指定对象的字符串表示形式。

注意:Object 类的方法是在 Object 的原型上动态创建的。要在 Object 的子类中重新定义该方法,请不要使用 override 关键字。例如,Object 的一个子类实现 function toString():String 而不使用基类覆盖。

返回
String — 对象的字符串表示形式。
事件详细信息
AIR-only status 事件
事件对象类型: flash.events.StatusEvent
属性 StatusEvent.type = flash.events.StatusEvent.STATUS

运行时版本: AIR 1.0

指示服务状态已更改。

code 属性的值为 "Service.available""Service.unavailable",但最佳做法是检查 ServiceMonitor.available 属性的值。

定义 status 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
code 对象状态的描述。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
level 消息类别,例如 "status""warning""error"
target 报告其状态的对象。