Un evento activa cambios de estado e inicia acciones. Los eventos actúan como indicadores que se envían desde la IU del sistema o desde fuera del proceso con un intent. Los eventos informan a la IU escalable sobre sucesos que requieren una respuesta.
Un evento de IU escalable es un indicador del sistema, activado por cambios de hardware o software, que puede alterar el estado de un panel. Estos eventos notifican al framework sobre las ocurrencias que requieren una respuesta de la IU. Para obtener un control más preciso sobre los estados del panel, también puedes definir eventos personalizados, además de los eventos del sistema integrados.
Estructura de un evento
Un identificador único (ID) obligatorio identifica un evento. Este ID categoriza el tipo de ocurrencia, como _System_AppOpenEvent
o _System_PanelEmptyEvent
.
Además de este ID, un evento puede incluir de forma opcional tokens y pares clave-valor para proporcionar contexto y detalles sobre el evento. Estos tokens permiten un filtrado más detallado de los eventos, lo que permite que las transiciones o las acciones se activen solo en condiciones específicas.
Los tokens se pasan al evento como una lista de pares clave-valor separados por un punto y coma (;
). A continuación, se incluye la lista de claves admitidas por el sistema:
Clave | Descripción |
---|---|
panelId |
Identifica un panel de IU específico asociado con el evento. |
component |
Especifica el nombre del componente, como una actividad vinculada al evento. |
package |
Indica el nombre del paquete relacionado con el evento. |
panelToVariantId |
Especifica la variante objetivo de un panel en contextos específicos. Usa este atributo para aplicar animaciones en cascada escuchando una transición de panel. Por ejemplo, activar la transición del panel B al estado cerrado cuando el panel A transiciona a un estado abierto. |
Por ejemplo:
"component=com.android.app;panelId=panel1"
Lógica de coincidencia de eventos
Cuando se envía un evento, se debe comparar con los criterios definidos para activar una transición o una acción. El proceso de correlación se realiza en dos etapas:
Coincidencia estricta de
id
del evento: Elid
del evento enviado debe coincidir exactamente con elid
especificado en el filtro de eventos de transición o acción. Si los IDs no coinciden, se considera que el evento no es una coincidencia.Coincidencia parcial de tokens de eventos: Cuando coinciden los IDs de eventos, el sistema usa la coincidencia parcial para evaluar los tokens de un evento en comparación con los tokens definidos en el filtro.
Para que se produzca una coincidencia, todas las propiedades del evento (tokens) especificadas en la definición del evento de la transición deben coincidir estrictamente con las propiedades correspondientes del evento enviado.
Dicho esto, el evento enviado puede contener tokens adicionales que no se definen de forma explícita en el filtro. Los tokens adicionales no impiden una coincidencia. En cambio, se ignoran en la evaluación de la coincidencia.
Por el contrario, si el filtro especifica un token que no está presente en el evento enviado o si el valor de un token coincidente no se alinea, no se considera una coincidencia.
Por ejemplo, considera una transición definida para activarse cuando id="app_open"
ocurre en panelId="panel1"
con component="com.android.myapp.Activity"
.
Si un evento enviado tiene id="app_open"
, panelId="panel1"
y component="com.android.myapp.Activity"
, se produce una coincidencia. Se cumplen todos los criterios de filtro y el valor más específico para Activity value in the
dispatched event is considered a match for
com.android.myapp`.
Sin embargo, la coincidencia falla si el evento se envía cuando id="app_open"
, panelId="panel1"
y component="com.android.yourapp.Activity"
.
Aunque id
y panelId
coinciden, el component
no es igual a component
en la transición (com.android.myapp
) y no coincide con com.android.yourapp
en el evento enviado.
Activador de transición
Si bien una transición puede ser una coincidencia, esto no significa que se active. Solo se puede activar una transición para cada evento. La IU escalable tiene como objetivo activar solo la coincidencia más cercana.
Por ejemplo, cuando dos transiciones (una con un nombre de componente y otra sin él -m
) coinciden, solo se activa la transición con el nombre de componente.
Envío y administración de eventos
Los eventos son fundamentales para el comportamiento dinámico de la IU adaptable. Los eventos se pueden enviar desde la IU del sistema o desde procesos externos con una intención.
Eventos del sistema
El framework define varios eventos del sistema que facilitan estas acciones:
Atributo | Descripción |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
Indica que el sistema recibió una solicitud para mostrar la pantalla Principal. En AAOS, Home puede ser una configuración flexible de ventanas, como una combinación de widgets o incluso un mapa. Este evento es fundamental para las transiciones o las acciones que dependen de que el usuario vea la interfaz principal de la página principal. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
Se envía cuando se abre una tarea o una app. Este evento general puede activar acciones o transiciones según el inicio de una app. Este evento contiene tokens como |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
Indica que se cerró una tarea o una app, y funciona como contrapartida de _System_TaskOpenEvent . Esto permite que el sistema reaccione cuando se descartan apps. Esto puede activar transiciones para que un panel vuelva a un estado predeterminado o para iniciar otras acciones de limpieza.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
Se envía cuando un panel específico queda vacío y se incluye Este evento es importante para una recuperación sólida de errores y para reiniciar apps cuando el contenido asociado falla o se cierra de forma inesperada, lo que evita la visualización de paneles de IU vacíos. Por ejemplo, si falla una app de |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
Indica que el sistema está ingresando al asistente de configuración (SUW). Este evento indica que el sistema está listo y se puede configurar para iniciar apps o mostrar paneles designados una vez que se inicializa el sistema. Ingresar a un estado del sistema tan crítico requiere un evento dedicado para activar los ajustes o las acciones de la IU adecuados. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
Indica que el sistema sale del asistente de configuración (SUW). Al igual que _System_EnterSuwEvent , este evento permite que el sistema responda a la finalización del proceso de configuración iniciando apps predeterminadas o realizando la transición a una IU estándar. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
Se activa cuando se completa una animación en la IU. Puedes usar este evento para activar acciones posteriores o cambios de estado que dependen de la finalización de una transición visual.
Este evento contiene un token para |