Konfigurowanie zdarzenia

Zdarzenie wywołuje zmiany stanu i inicjuje działania. Zdarzenia działają jak sygnały wysyłane z interfejsu systemowego lub spoza procesu za pomocą intencji. Zdarzenia informują skalowalny interfejs o wystąpieniu sytuacji, które wymagają reakcji.

Zdarzenie skalowalnego interfejsu to sygnał systemowy wywoływany przez zmiany sprzętowe lub programowe, który może zmienić stan panelu. Te zdarzenia powiadamiają framework o sytuacjach, które wymagają reakcji interfejsu. Aby mieć większą kontrolę nad stanami paneli, oprócz wbudowanych zdarzeń systemowych możesz też definiować zdarzenia niestandardowe.

Struktura zdarzenia

Zdarzenie jest identyfikowane przez obowiązkowy unikalny identyfikator (ID). Ten identyfikator określa typ zdarzenia, np. _System_TaskOpenEvent lub _System_PanelEmptyEvent.

Oprócz tego identyfikatora zdarzenie może opcjonalnie zawierać tokeny, czyli pary klucz-wartość, które dostarczają kontekstu i szczegółów zdarzenia. Te tokeny umożliwiają bardziej szczegółowe filtrowanie zdarzeń, dzięki czemu przejścia lub działania mogą być wywoływane tylko w określonych warunkach.

Tokeny są przekazywane do zdarzenia jako lista par klucz-wartość rozdzielonych średnikiem (;). Oto lista kluczy obsługiwanych przez system:

Klucz Opis
panelId Identyfikuje konkretny panel interfejsu powiązany ze zdarzeniem.
component Określa nazwę komponentu, np. aktywności powiązanej ze zdarzeniem.
package Wskazuje nazwę pakietu powiązanego ze zdarzeniem.
panelToVariantId Określa w określonych kontekstach wariant docelowy panelu. Użyj tego atrybutu, aby kaskadowo stosować animacje, nasłuchując przejścia panelu. Możesz na przykład wywołać przejście panelu B do stanu zamkniętego, gdy panelu A przechodzi do stanu otwartego.

Przykład:

"component=com.android.app;panelId=panel1"

Logika dopasowywania zdarzeń

Gdy zdarzenie zostanie wysłane, musi zostać dopasowane do zdefiniowanych kryteriów, aby wywołać przejście lub działanie. Proces dopasowywania przebiega w 2 etapach:

  • Ścisłe dopasowanie id zdarzenia: id wysłanego zdarzenia musi dokładnie odpowiadać id określonemu w filtrze zdarzeń przejścia lub działania. Jeśli identyfikatory się nie zgadzają, zdarzenie jest uznawane za niedopasowane.

  • Częściowe dopasowanie tokena zdarzenia: gdy identyfikatory zdarzeń się zgadzają, system używa częściowego dopasowania, aby porównać tokeny zdarzenia z tokenami zdefiniowanymi w filtrze.

    Aby doszło do dopasowania, wszystkie właściwości zdarzenia (tokeny) określone w definicji zdarzenia przejścia muszą dokładnie odpowiadać odpowiednim właściwościom w wysłanym zdarzeniu.

    Wysłane zdarzenie może jednak zawierać dodatkowe tokeny, które nie są wyraźnie zdefiniowane w filtrze. Dodatkowe tokeny nie uniemożliwiają dopasowania. Są one ignorowane podczas oceny dopasowania.

    Jeśli natomiast filtr określa token, który nie występuje w wysłanym zdarzeniu, lub jeśli wartość pasującego tokena nie jest zgodna, nie jest to uznawane za dopasowanie.

Rozważmy na przykład przejście zdefiniowane tak, aby było wywoływane, gdy id="app_open" nastąpi w panelId="panel1" z component="com.android.myapp.Activity".

Jeśli wysłane zdarzenie ma id="app_open", panelId="panel1" i component="com.android.myapp.Activity", nastąpi dopasowanie. Wszystkie kryteria filtra są spełnione, a bardziej szczegółowa wartość dla Activity value in the dispatched event is considered a match forcom.android.myapp`.

Dopasowanie nie powiedzie się jednak, jeśli wysłane zdarzenie ma id="app_open", panelId="panel1", i component="com.android.yourapp.Activity". Chociaż id i panelId się zgadzają, component nie jest równy component w przejściu – com.android.myapp – nie pasuje do com.android.yourapp w wysłanym zdarzeniu.

Aktywator przejścia

Chociaż przejście może być dopasowane, nie oznacza to, że zostanie wywołane. Dla każdego zdarzenia można wywołać tylko 1 przejście. Skalowalny interfejs ma na celu wywoływanie tylko najbliższego dopasowania.

Jeśli na przykład 2 przejścia – jedno z nazwą komponentu, a drugie bez nazwy komponentu -m – są dopasowane, wywoływane jest tylko przejście z nazwą komponentu.

Wysyłanie i obsługa zdarzeń

Zdarzenia mają kluczowe znaczenie dla dynamicznego działania skalowalnego interfejsu. Zdarzenia mogą być wysyłane z interfejsu systemowego lub z procesów zewnętrznych za pomocą intencji.

Zdarzenia systemowe

Framework definiuje kilka zdarzeń systemowych, które ułatwiają te działania:

Atrybut Opis
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
Oznacza, że system otrzymał prośbę o wyświetlenie ekranu Główna. W AAOS ekran Główna może być elastyczną konfiguracją okien, np. kombinacją widżetów, a nawet mapą. To zdarzenie jest kluczowe w przypadku przejść lub działań które zależą od wyświetlenia przez użytkownika głównego interfejsu.
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

Jest wysyłane, gdy otwierane jest zadanie lub aplikacja. To ogólne zdarzenie może wywoływać działania lub przejścia na podstawie uruchomienia aplikacji.

To zdarzenie zawiera tokeny takie jak panelId i component.

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
Sygnalizuje, że zadanie lub aplikacja zostały zamknięte, i jest odpowiednikiem _System_TaskOpenEvent. Umożliwia to systemowi reagowanie na zamykanie aplikacji. Może to wywoływać przejścia, które przywracają panel do stanu domyślnego stanu lub inicjują inne działania czyszczące.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

Jest wysyłane, gdy określony panel staje się pusty, i zawiera panelId jako token, dzięki czemu reguły są filtrowane w zależności od tego, który panel jest pusty.

To zdarzenie jest ważne w przypadku niezawodnego odzyskiwania po błędach i ponownego uruchamiania aplikacji gdy powiązane treści ulegną awarii lub zostaną nieoczekiwanie zakończone, aby zapobiec wyświetlaniu pustych paneli interfejsu.

Jeśli na przykład aplikacja ControlBar ulegnie awarii, możesz skonfigurować działanie, które wykryje to zdarzenie na jej panelu i automatycznie ponownie uruchomi ControlBar

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
Wskazuje, że system przechodzi do kreatora konfiguracji. To zdarzenie sygnalizuje gotowość systemu i można je skonfigurować tak, aby uruchamiało aplikacje lub wyświetlało określone panele po zainicjowaniu systemu. Przejście do tak krytycznego stanu systemu wymaga specjalnego zdarzenia, które wywoła odpowiednie dostosowania lub działania interfejsu.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
Wskazuje, że system opuszcza kreatora konfiguracji. Podobnie jak _System_EnterSuwEvent, to zdarzenie umożliwia systemowi reagowanie na zakończenie procesu konfiguracji przez uruchamianie domyślnych aplikacji lub przechodzenie do standardowego interfejsu.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
Jest wywoływane, gdy animacja w interfejsie się zakończy. Możesz użyć tego zdarzenia, aby wywołać kolejne działania lub zmiany stanu, które zależą od zakończenia przejścia wizualnego.

To zdarzenie zawiera token variantId, który wskazuje, jaki wariant panelu został wybrany na końcu animacji.