Ereignis konfigurieren

Ein Ereignis löst Statusänderungen aus und initiiert Aktionen. Ereignisse fungieren 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 skalierbare Benutzeroberflächen ist ein Systemsignal, das durch Hardware- oder Softwareänderungen ausgelöst wird und den Status eines Bereichs ändern kann. Diese Ereignisse benachrichtigen das Framework über Vorkommnisse, die eine Reaktion der Benutzeroberfläche erfordern. Für eine genauere Steuerung der Status von Feldern können Sie neben den 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_AppOpenEvent 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 einen bestimmten UI-Bereich an, der 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 Panels in bestimmten Kontexten an. Mit diesem Attribut können Sie Animationen kaskadieren, indem Sie auf einen Bereichsübergang warten. Beispiel: Das Einblenden von Bereich B wird ausgelöst, wenn Bereich A eingeblendet wird.

Beispiel:

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

Logik für den Ereignisabgleich

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

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

  • Abgleich von Event-Tokens: Wenn Event-IDs übereinstimmen, werden die Tokens eines Ereignisses mithilfe des partiellen Abgleichs mit den im Filter definierten Tokens verglichen.

    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 eine Übergangssequenz übereinstimmt, bedeutet das nicht, dass sie ausgelöst wird. 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 Zuhause 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 Benutzeroberfläche für das Zuhause 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 Standardstatus zurückzusetzen oder andere Bereinigungsaktionen zu starten.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

Wird ausgelöst, wenn ein bestimmtes Feld leer wird. Enthält panelId als Token, damit Trigger danach gefiltert werden können, welches Feld leer ist.

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 dediziertes 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 Panels am Ende der Animation angezeigt wurde.