在用户(或操作系统)执行以下操作时,将调用 AIR 应用程序:
-
从桌面解释程序启动该应用程序。
-
使用该应用程序作为命令行解释程序中的命令。
-
打开某类型文件而该应用程序是此类型文件的默认打开程序。
-
(Mac OS X) 单击停靠任务栏中的该应用程序图标(无论应用程序当前是否正在运行)。
-
选择从安装程序启动该应用程序(在新安装过程结束时,或者在双击已安装应用程序的 AIR 文件之后)。
-
当已安装版本指示其自身正在处理应用程序更新(通过在应用程序描述符文件中加入
<customUpdateUI>true</customUpdateUI>
声明)时,开始更新 AIR 应用程序。
-
(iOS) 从 Apple 推送通知服务 (APNs) 接收通知。
-
通过 URL 调用应用程序。
-
访问承载了将调用
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;
}