Ereignis konfigurieren

Ein Ereignis löst Statusänderungen aus und initiiert Aktionen. Ereignisse dienen als Signale, die über eine Absicht von der System-UI oder von außerhalb des Prozesses gesendet werden. Ereignisse informieren die skalierbare Benutzeroberfläche über Vorkommnisse, die eine Reaktion erfordern.

Ein Ereignis für die skalierbare Benutzeroberfläche ist ein Systemsignal, das durch Hardware- oder Softwareänderungen ausgelöst wird und den Status eines Panels ändern kann. Diese Ereignisse benachrichtigen das Framework über Vorkommnisse, die eine Reaktion der Benutzeroberfläche erfordern. Für eine präzisere Steuerung von Panelstatus können Sie zusätzlich zu integrierten Systemereignissen auch benutzerdefinierte Ereignisse definieren.

Struktur eines Ereignisses

Eine obligatorische eindeutige Kennung (ID) identifiziert ein Ereignis. Diese ID kategorisiert die Art des Vorkommens, z. B. _System_TaskOpenEvent oder _System_PanelEmptyEvent.

Zusätzlich zu dieser ID kann ein Ereignis optional Tokens und Schlüssel/Wert-Paare enthalten, um Kontext und Details zum Ereignis bereitzustellen. Mit diesen Tokens lassen sich Ereignisse genauer filtern, sodass Übergänge oder Aktionen nur unter bestimmten Bedingungen ausgelöst werden.

Tokens werden als Liste von Schlüssel/Wert-Paaren, die durch ein Semikolon (;) getrennt sind, an das Ereignis übergeben. Hier ist die Liste der vom System unterstützten Schlüssel:

Schlüssel Beschreibung
panelId Gibt ein bestimmtes UI-Panel an, das mit dem Ereignis verknüpft ist.
component Gibt den Namen der Komponente an, z. B. eine mit dem Ereignis verknüpfte Aktivität.
package Gibt den Paketnamen an, der mit dem Ereignis verknüpft ist.
panelToVariantId Gibt die Zielvariante eines Bereichs in bestimmten Kontexten an. Mit diesem Attribut können Sie Animationen kaskadieren, indem Sie auf einen Bereichsübergang warten. Beispiel: Das Einblenden von Bereich A löst das Ausblenden von Bereich B aus.

Beispiel:

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

Logik für den Ereignisabgleich

Wenn ein Ereignis gesendet wird, muss es mit den definierten Kriterien abgeglichen werden, um einen Übergang oder eine Aktion auszulösen. Der Abgleich erfolgt in zwei Phasen:

  • Genaue Übereinstimmung von Ereignis-id: Das id des gesendeten Ereignisses muss genau mit dem id übereinstimmen, das im Filter für Übergangs- oder Aktionsereignisse angegeben ist. Wenn die IDs nicht übereinstimmen, gilt das Ereignis nicht als Übereinstimmung.

  • Teilabgleich von Ereignistokens: Wenn Ereignis-IDs übereinstimmen, werden die Tokens eines Ereignisses anhand der im Filter definierten Tokens abgeglichen.

    Damit eine Übereinstimmung erfolgt, müssen alle in der Ereignisdefinition des Übergangs angegebenen Ereigniseigenschaften (Tokens) genau mit den entsprechenden Eigenschaften im gesendeten Ereignis übereinstimmen.

    Das gesendete Ereignis kann jedoch zusätzliche Tokens enthalten, die nicht explizit im Filter definiert sind. Zusätzliche Tokens verhindern keine Übereinstimmung. Stattdessen werden sie bei der Auswertung der Übereinstimmung ignoriert.

    Wenn im Filter ein Token angegeben ist, das im gesendeten Ereignis nicht vorhanden ist, oder wenn der Wert eines übereinstimmenden Tokens nicht übereinstimmt, wird das Ereignis nicht als Übereinstimmung betrachtet.

Angenommen, Sie haben einen Übergang definiert, der ausgelöst werden soll, wenn id="app_open" auf panelId="panel1" mit component="com.android.myapp.Activity" erfolgt.

Wenn ein gesendetes Ereignis id="app_open", panelId="panel1" und component="com.android.myapp.Activity" enthält, wird eine Übereinstimmung gefunden. Alle Filterkriterien werden erfüllt und der spezifischere Wert für Activity value in the dispatched event is considered a match forcom.android.myapp`.

Der Abgleich schlägt jedoch fehl, wenn das gesendete Ereignis id="app_open", panelId="panel1" und component="com.android.yourapp.Activity" ist. Obwohl id und panelId übereinstimmen, stimmt component nicht mit component im Übergang überein. com.android.myapp stimmt nicht mit com.android.yourapp im gesendeten Ereignis überein.

Übergangstrigger

Auch wenn ein Übergang übereinstimmt, wird er nicht unbedingt ausgelöst. Pro Ereignis kann nur ein Übergang ausgelöst werden. Die skalierbare Benutzeroberfläche soll nur die beste Übereinstimmung auslösen.

Wenn beispielsweise zwei Übergänge übereinstimmen – einer mit einem Komponentennamen und einer ohne Komponentennamen -m –, wird nur der Übergang mit dem Komponentennamen ausgelöst.

Ereignisversand und ‑verarbeitung

Ereignisse sind für das dynamische Verhalten der skalierbaren Benutzeroberfläche von zentraler Bedeutung. Ereignisse können über die System-UI oder über externe Prozesse mit einer Absicht gesendet werden.

Systemereignisse

Das Framework definiert mehrere Systemereignisse, die diese Aktionen ermöglichen:

Attribut Beschreibung
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
Gibt an, dass das System eine Anfrage zum Anzeigen des Bildschirms Startseite erhalten hat. In AAOS kann Home eine flexible Konfiguration von Fenstern sein, z. B. eine Kombination aus Widgets oder sogar eine Karte. Dieses Ereignis ist entscheidend für Übergänge oder Aktionen, die davon abhängen, dass der Nutzer die primäre Smart Home-Oberfläche sieht.
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

Wird gesendet, wenn eine Aufgabe oder App geöffnet wird. Dieses allgemeine Ereignis kann Aktionen oder Übergänge auslösen, wenn eine App gestartet wird.

Dieses Ereignis enthält Tokens wie panelId und component.

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
Gibt an, dass eine Aufgabe oder App geschlossen wurde. Dies ist das Gegenstück zu _System_TaskOpenEvent. So kann das System auf das Schließen von Apps reagieren. Dadurch können Übergänge ausgelöst werden, um ein Feld in den Standardzustand zurückzusetzen oder andere Bereinigungsaktionen zu starten.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

Wird ausgelöst, wenn ein bestimmtes Panel leer wird. Enthält panelId als Token, damit Trigger entsprechend dem leeren Panel gefiltert werden.

Dieses Ereignis ist wichtig für eine robuste Fehlerbehebung und zum Neustarten von Apps, wenn zugehörige Inhalte abstürzen oder unerwartet beendet werden, um die Anzeige leerer UI-Bereiche zu verhindern.

Wenn beispielsweise eine ControlBar-App abstürzt, können Sie eine Aktion konfigurieren, um dieses Ereignis auf dem zugehörigen Steuerfeld zu erkennen und die ControlBar automatisch neu zu starten.

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
Gibt an, dass das System in den Einrichtungsassistenten (Setup Wizard, SUW) wechselt. Dieses Ereignis signalisiert die Systembereitschaft und kann so konfiguriert werden, dass Apps gestartet oder bestimmte Bereiche angezeigt werden, sobald das System initialisiert ist. Das Eintreten eines solchen kritischen Systemstatus erfordert ein spezielles Ereignis, um die entsprechenden Anpassungen der Benutzeroberfläche oder Aktionen auszulösen.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
Gibt an, dass das System den Einrichtungsassistenten beendet. Ähnlich wie bei _System_EnterSuwEvent kann das System bei diesem Ereignis auf den Abschluss des Einrichtungsvorgangs reagieren, indem es Standard-Apps startet oder zu einer Standard-Benutzeroberfläche wechselt.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
Wird ausgelöst, wenn eine Animation in der Benutzeroberfläche abgeschlossen ist. Mit diesem Ereignis können Sie nachfolgende Aktionen oder Zustandsänderungen auslösen, die vom Abschluss einer visuellen Übergangsanimation abhängen.

Dieses Ereignis enthält ein Token für variantId, um anzugeben, welche Variante des Bereichs am Ende der Animation angezeigt wird.