在用户(或操作系统)执行以下操作时,将调用 AIR 应用程序:
从桌面解释程序启动该应用程序。
使用该应用程序作为命令行解释程序中的命令。
打开某类型文件而该应用程序是此类型文件的默认打开程序。
(Mac OS X) 单击停靠任务栏中的该应用程序图标(无论应用程序当前是否正在运行)。
选择从安装程序启动该应用程序(在新安装过程结束时,或者在双击已安装应用程序的 AIR 文件之后)。
在已安装版本指示其正在处理应用程序自我更新后开始更新 AIR 应用程序(方法是将 <customUpdateUI>true</customUpdateUI> 声明包含在应用程序描述符文件中)。
访问承载了将调用 com.adobe.air.AIR launchApplication() 方法(该方法可为 AIR 应用程序指定识别信息)的 Flash 标志或应用程序的网页。(要使浏览器调用成功,应用程序描述符还必须包含 <allowBrowserInvocation>true</allowBrowserInvocation> 声明。)
每当调用 AIR 应用程序时,AIR 都会通过单一 NativeApplication 对象调度类型为 invoke 的 InvokeEvent 对象。若要给应用程序留出时间来初始化自身并注册事件侦听器,将对 invoke 事件进行排队而非将其丢弃。一旦侦听器已注册,就会传送所有排队的事件。
注: 使用浏览器调用功能来调用某个应用程序时,如果该应用程序尚未运行,则 NativeApplication 对象将仅调度一个 invoke 事件。
若要接收 invoke 事件,请调用 NativeApplication 对象 (NativeApplication.nativeApplication) 的 addEventListener() 方法。当某个事件侦听器为 invoke 事件进行注册后,该事件侦听器还会接收到在注册前发生的所有 invoke 事件。在对 addEventListener() 的调用返回后不久,将以短时间间隔一次调度一个排队的 invoke 事件。如果在此过程中发生了新的 invoke 事件,则可能会在一个或多个排队的事件之前调度该事件。通过该事件队列可处理在初始化代码执行之前发生的任何 invoke 事件。请记住,如果在执行后期(在应用程序初始化之后)添加一个事件侦听器,该事件侦听器仍将会接收自应用程序启动以来发生的所有 invoke 事件。
仅启动 AIR 应用程序的一个实例。当再次调用某个已经运行的应用程序时,AIR 将向该正在运行的实例调度一个新的 invoke 事件。AIR 应用程序负责响应 invoke 事件并采取适当的动作(例如,打开一个新的文档窗口)。
InvokeEvent 对象包含任何传递给该应用程序的参数,以及已从中调用该应用程序的目录。如果该应用程序是由于文件类型关联而被调用,则文件的完整路径将包含在命令行参数中。同样,如果该应用程序是由于某个应用程序升级而被调用,则会提供升级 AIR 文件的完整路径。
当在一次操作中打开多个文件时,在 Mac OS X 中将调度一个 InvokeEvent 对象。每个文件都包括在 arguments 数组中。 在 Windows 和 Linux 中将为每个文件调度一个单独的 InvokeEvent 对象。
应用程序可通过以下方法处理 invoke 事件:即向其 NativeApplication 对象注册侦听器,
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvokeEvent);
然后定义事件侦听器:
var arguments:Array;
var currentDir:File;
public function onInvokeEvent(invocation:InvokeEvent):void {
arguments = invocation.arguments;
currentDir = invocation.currentDirectory;
}