이벤트는 상태 변경을 트리거하고 작업을 시작합니다. 이벤트는 인텐트를 사용하여 시스템 UI 또는 프로세스 외부에서 디스패치되는 신호 역할을 합니다. 이벤트는 반응이 필요한 발생에 관해 확장 가능한 UI에 알립니다.
확장 가능한 UI 이벤트는 하드웨어 또는 소프트웨어 변경으로 트리거되며 패널의 상태를 변경할 수 있는 시스템 신호입니다. 이러한 이벤트는 UI 응답이 필요한 발생에 관해 프레임워크에 알립니다. 패널 상태를 더 정밀하게 제어하려면 내장 시스템 이벤트 외에 맞춤 이벤트를 정의할 수도 있습니다.
이벤트 구조
필수 고유 식별자 (ID)는 이벤트를 식별합니다. 이 ID는 _System_AppOpenEvent
또는 _System_PanelEmptyEvent
과 같은 발생 유형을 분류합니다.
이 ID 외에도 이벤트는 이벤트에 관한 컨텍스트와 세부정보를 제공하기 위해 토큰, 키-값 쌍을 선택적으로 전달할 수 있습니다. 이러한 토큰을 사용하면 이벤트를 더 세부적으로 필터링하여 특정 조건에서만 전환이나 작업을 트리거할 수 있습니다.
토큰은 세미콜론 (;
)으로 구분된 키-값 쌍 목록으로 이벤트에 전달됩니다. 시스템에서 지원하는 키 목록은 다음과 같습니다.
키 | 설명 |
---|---|
panelId |
이벤트와 연결된 특정 UI 패널을 식별합니다. |
component |
이벤트에 연결된 활동과 같은 구성요소 이름을 지정합니다. |
package |
이벤트와 관련된 패키지 이름을 나타냅니다. |
panelToVariantId |
특정 컨텍스트에서 패널의 타겟 변형을 지정합니다. 이 속성을 사용하여 패널 전환을 수신 대기하여 애니메이션을 연속으로 실행합니다. 예를 들어 패널 A가 열림 상태로 전환될 때 패널 B가 닫힘 상태로 전환되도록 트리거합니다. |
예를 들면 다음과 같습니다.
"component=com.android.app;panelId=panel1"
이벤트 일치 로직
이벤트가 디스패치되면 정의된 기준과 일치하여 전환이나 작업을 트리거해야 합니다. 일치 프로세스는 두 단계로 진행됩니다.
엄격한 이벤트
id
일치: 디스패치된 이벤트의id
가 전환 또는 작업 이벤트 필터에 지정된id
와 정확히 일치해야 합니다. ID가 일치하지 않으면 이벤트가 일치하지 않는 것으로 간주됩니다.부분 이벤트 토큰 일치: 이벤트 ID가 일치하면 시스템에서 부분 일치를 사용하여 필터에 정의된 토큰에 대해 이벤트의 토큰을 평가합니다.
일치가 발생하려면 전환의 이벤트 정의에 지정된 모든 이벤트 속성 (토큰)이 디스패치된 이벤트의 해당 속성과 엄격하게 일치해야 합니다.
하지만 디스패치된 이벤트에는 필터에 명시적으로 정의되지 않은 추가 토큰이 포함될 수 있습니다. 추가 토큰이 있어도 일치하는 항목이 표시됩니다. 대신 일치 평가에서 무시됩니다.
반대로 필터가 디스패치된 이벤트에 없는 토큰을 지정하거나 일치하는 토큰의 값이 일치하지 않으면 일치하는 것으로 간주되지 않습니다.
예를 들어 component="com.android.myapp.Activity"
이 있는 panelId="panel1"
에서 id="app_open"
가 발생할 때 트리거되도록 정의된 전환을 생각해 보세요.
디스패치된 이벤트에 id="app_open"
, panelId="panel1"
, component="com.android.myapp.Activity"
이 있으면 일치합니다. 모든 필터 기준이 충족되고 Activity value in the
dispatched event is considered a match for
com.android.myapp`.
하지만 id="app_open"
, panelId="panel1"
, component="com.android.yourapp.Activity"
일 때 디스패치된 이벤트는 일치하지 않습니다.
id
과 panelId
은 일치하지만 전환의 component
(com.android.myapp
)이 디스패치된 이벤트의 com.android.yourapp
과 일치하지 않습니다.component
전환 트리거
전환이 일치할 수 있지만 트리거된다는 의미는 아닙니다. 각 이벤트에 대해 하나의 전환만 트리거할 수 있습니다. 확장 가능한 UI는 가장 근접한 일치 항목만 트리거하는 것을 목표로 합니다.
예를 들어 구성요소 이름이 있는 전환과 구성요소 이름이 없는 전환 -m
이 일치하는 경우 구성요소 이름이 있는 전환만 트리거됩니다.
이벤트 디스패치 및 처리
이벤트는 확장 가능한 UI의 동적 동작에 중심적인 역할을 합니다. 이벤트는 시스템 UI 또는 인텐트가 있는 외부 프로세스에서 디스패치할 수 있습니다.
시스템 이벤트
프레임워크는 이러한 작업을 용이하게 하는 여러 시스템 이벤트를 정의합니다.
속성 | 설명 |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
시스템이 홈 화면을 표시하라는 요청을 수신했음을 나타냅니다. AAOS에서 홈은 위젯 조합이나 지도와 같은 유연한 창 구성일 수 있습니다. 이 이벤트는 사용자가 기본 홈 인터페이스를 보는 데 의존하는 전환이나 작업에 중요합니다. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
작업이나 앱이 열릴 때 디스패치됩니다. 이 일반 이벤트는 앱 실행을 기반으로 작업이나 전환을 트리거할 수 있습니다. 이 이벤트에는 |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
작업 또는 앱이 닫혔음을 나타내며 _System_TaskOpenEvent 의 대응 항목으로 사용됩니다. 이렇게 하면 시스템이 앱이 닫히는 것에 반응할 수 있습니다. 이렇게 하면 패널을 기본 상태로 되돌리거나 다른 정리 작업을 시작하는 전환이 트리거될 수 있습니다.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
특정 패널이 비어 있을 때 디스패치되며, 트리거가 비어 있는 패널에 따라 필터링되도록 이 이벤트는 강력한 오류 복구에 중요하며, 연결된 콘텐츠가 비정상 종료되거나 예기치 않게 종료될 때 앱을 다시 실행하여 빈 UI 패널이 표시되지 않도록 합니다. 예를 들어 |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
시스템이 설정 마법사 (SUW)에 진입함을 나타냅니다. 이 이벤트는 시스템 준비 상태를 나타내며 시스템이 초기화되면 앱을 실행하거나 지정된 패널을 표시하도록 구성할 수 있습니다. 이러한 중요한 시스템 상태를 입력하려면 적절한 UI 조정이나 작업을 트리거하는 전용 이벤트가 필요합니다. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
시스템이 설정 마법사 (SUW)를 종료함을 나타냅니다. _System_EnterSuwEvent 와 마찬가지로 이 이벤트를 사용하면 시스템이 기본 앱을 실행하거나 표준 UI로 전환하여 설정 프로세스 완료에 응답할 수 있습니다. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
UI에서 애니메이션이 완료될 때 트리거됩니다. 이 이벤트를 사용하여 시각적 전환 완료에 따라 달라지는 후속 작업이나 상태 변경을 트리거할 수 있습니다.
이 이벤트에는 애니메이션이 끝날 때 패널이 어떤 변형으로 끝났는지 나타내는 |