사용자 또는 운영 체제에서 다음 작업을 수행할 때 AIR 응용 프로그램이 호출됩니다.
데스크톱 셀에서 응용 프로그램을 시작합니다.
응용 프로그램을 명령줄 셀에서 명령으로 사용합니다.
응용 프로그램이 기본적으로 열리는 응용 프로그램인 파일 유형을 엽니다.
(Mac OS X) 응용 프로그램이 현재 실행 중인지 여부에 상관없이 고정 작업 표시줄에서 응용 프로그램 아이콘을 클릭합니다.
이미 설치된 응용 프로그램에 대한 AIR 파일을 두 번 클릭한 후 또는 새 설치 프로세스를 끝낸 후 설치 프로그램에서 응용 프로그램을 시작하도록 선택합니다.
응용 프로그램 설명자 파일에 <customUpdateUI>true</customUpdateUI> 선언을 포함하여 설치된 버전에서 응용 프로그램 업데이트를 자체적으로 처리하고 있음을 신호로 표시한 경우 AIR 응용 프로그램 업데이트를 시작한다.
AIR 응용 프로그램에 대한 식별 정보를 지정하는 com.adobe.air.AIR launchApplication() 메서드를 호출하는 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;
}