當使用者 (或作業系統) 執行下列操作時,便會叫用 AIR 應用程式:
-
從桌面殼層啟動應用程式。
-
從命令列殼層輸入命令來使用應用程式。
-
開啟某一類型的檔案,而應用程式正好是該類型的預設應用程式。
-
(Mac OS X) 按一下停駐工作列上的應用程式圖示 (不論應用程式目前是否正在執行)。
-
選擇從安裝程式啟動應用程式 (在全新安裝過程的結束步驟時,或是按兩下已安裝的應用程式 AIR 檔之後)。
-
當已安裝的版本通知要自行處理應用程式更新時 (由於應用程式描述器檔案中包含
<customUpdateUI>true</customUpdateUI>
宣告),開始更新 AIR 應用程式。
-
(iOS) 擷取 Apple 推播通知服務 (APNs) 的通知。
-
透過 URL 叫用應用程式。
-
造訪裝載 Flash 標誌或應用程式的網頁,以致指定 AIR 應用程式的識別資訊來呼叫
com.adobe.air.AIR launchApplication()
方法 (應用程式描述器檔案中也必須包含
<allowBrowserInvocation>true</allowBrowserInvocation>
宣告,瀏覽器叫用才會成功)。
每當叫用 AIR 應用程式時,AIR 就會透過 Singleton 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 物件。
應用程式可使用 NativeApplication 物件來註冊偵聽程式,以便處理
invoke
事件:
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvokeEvent);
接下來會定義事件偵聽程式:
var arguments:Array;
var currentDir:File;
public function onInvokeEvent(invocation:InvokeEvent):void {
arguments = invocation.arguments;
currentDir = invocation.currentDirectory;
}