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
idzdarzenia:idwysłanego zdarzenia musi dokładnie odpowiadaćidokreś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 |
_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
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 |
_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 |