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: Dieid
des gesendeten Ereignisses muss genau mit derid
ü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 for
com.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 |
_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 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 |
_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 |