Một sự kiện sẽ kích hoạt các thay đổi về trạng thái và bắt đầu các hành động. Các sự kiện đóng vai trò là tín hiệu, được gửi từ Giao diện người dùng hệ thống hoặc từ bên ngoài quy trình bằng cách sử dụng một ý định. Các sự kiện thông báo cho Giao diện người dùng có thể mở rộng về những trường hợp cần có phản hồi.
Sự kiện giao diện người dùng có thể mở rộng là một tín hiệu hệ thống, được kích hoạt bởi các thay đổi về phần cứng hoặc phần mềm, có thể làm thay đổi trạng thái của một bảng điều khiển. Những sự kiện này thông báo cho khung về các trường hợp cần có phản hồi của giao diện người dùng. Để kiểm soát chính xác hơn các trạng thái của bảng điều khiển, bạn cũng có thể xác định các sự kiện tuỳ chỉnh, ngoài các sự kiện hệ thống tích hợp.
Cấu trúc của một sự kiện
Giá trị nhận dạng duy nhất (ID) bắt buộc giúp xác định một sự kiện. Mã nhận dạng này phân loại loại lượt xuất hiện, chẳng hạn như _System_AppOpenEvent
hoặc _System_PanelEmptyEvent
.
Ngoài mã nhận dạng này, một sự kiện có thể tuỳ ý mang theo các mã thông báo, cặp khoá-giá trị để cung cấp bối cảnh và thông tin chi tiết về sự kiện. Các mã thông báo này cho phép lọc sự kiện chi tiết hơn, chỉ kích hoạt các hiệu ứng chuyển đổi hoặc hành động trong những điều kiện cụ thể.
Mã thông báo được truyền đến sự kiện dưới dạng danh sách các cặp khoá-giá trị được phân tách bằng dấu chấm phẩy (;
). Sau đây là danh sách các khoá được hệ thống hỗ trợ:
Khoá | Mô tả |
---|---|
panelId |
Xác định một bảng điều khiển cụ thể trên giao diện người dùng liên kết với sự kiện. |
component |
Chỉ định tên thành phần, chẳng hạn như một hoạt động được liên kết với sự kiện. |
package |
Cho biết tên gói liên quan đến sự kiện. |
panelToVariantId |
Chỉ định biến thể mục tiêu của một bảng điều khiển trong các bối cảnh cụ thể. Sử dụng thuộc tính này để xếp tầng ảnh động bằng cách theo dõi một quá trình chuyển đổi bảng điều khiển. Ví dụ: kích hoạt quá trình chuyển đổi bảng B sang trạng thái đóng khi bảng A được chuyển đổi sang trạng thái mở. |
Ví dụ:
"component=com.android.app;panelId=panel1"
Logic so khớp sự kiện
Khi được gửi đi, sự kiện phải khớp với các tiêu chí đã xác định để kích hoạt một quá trình chuyển đổi hoặc một hành động. Quy trình so khớp diễn ra theo 2 giai đoạn:
So khớp chính xác sự kiện
id
:id
của sự kiện được gửi phải khớp chính xác vớiid
được chỉ định trong bộ lọc sự kiện chuyển đổi hoặc hành động. Nếu mã nhận dạng không khớp, sự kiện sẽ được coi là không khớp.Khớp một phần mã thông báo sự kiện: Khi mã nhận dạng sự kiện khớp, hệ thống sẽ sử dụng tính năng khớp một phần để đánh giá mã thông báo của một sự kiện dựa trên các mã thông báo được xác định trong bộ lọc.
Để xảy ra một lượt khớp, tất cả các thuộc tính sự kiện (mã thông báo) được chỉ định trong định nghĩa sự kiện của quá trình chuyển đổi phải khớp chính xác với các thuộc tính tương ứng trong sự kiện được gửi.
Tuy nhiên, sự kiện được gửi có thể chứa các mã thông báo bổ sung không được xác định rõ ràng trong bộ lọc. Các mã thông báo bổ sung không ngăn chặn việc so khớp. Thay vào đó, các giá trị này sẽ bị bỏ qua trong quá trình đánh giá so khớp.
Ngược lại, nếu bộ lọc chỉ định một mã thông báo không có trong sự kiện được gửi hoặc nếu giá trị của một mã thông báo khớp không phù hợp, thì mã thông báo đó sẽ không được coi là khớp.
Ví dụ: hãy xem xét một hiệu ứng chuyển đổi được xác định để kích hoạt khi id="app_open"
diễn ra trên panelId="panel1"
với component="com.android.myapp.Activity"
.
Nếu một sự kiện được gửi có id="app_open"
, panelId="panel1"
và component="com.android.myapp.Activity"
, thì sẽ có một kết quả khớp. Tất cả các tiêu chí lọc đều được đáp ứng và giá trị cụ thể hơn cho Activity value in the
dispatched event is considered a match for
com.android.myapp`.
Tuy nhiên, quá trình so khớp sẽ thất bại nếu sự kiện được gửi khi id="app_open"
, panelId="panel1"
và component="com.android.yourapp.Activity"
.
Mặc dù id
và panelId
khớp với nhau, nhưng component
không bằng component
trong quá trình chuyển đổi – com.android.myapp
– không khớp với com.android.yourapp
trong sự kiện được gửi.
Điều kiện kích hoạt chuyển đổi
Mặc dù một hiệu ứng chuyển đổi có thể là một kết quả trùng khớp, nhưng điều này không có nghĩa là hiệu ứng đó sẽ được kích hoạt. Bạn chỉ có thể kích hoạt một hiệu ứng chuyển đổi cho mỗi sự kiện. Giao diện người dùng có thể mở rộng chỉ nhằm kích hoạt kết quả phù hợp nhất.
Ví dụ: khi hai hiệu ứng chuyển đổi (một hiệu ứng có tên thành phần và một hiệu ứng không có tên thành phần -m
) trùng khớp, thì chỉ hiệu ứng chuyển đổi có tên thành phần mới được kích hoạt.
Gửi và xử lý sự kiện
Sự kiện là yếu tố trung tâm đối với hành vi động của Giao diện người dùng có thể mở rộng. Sự kiện có thể được gửi từ Giao diện người dùng hệ thống hoặc từ các quy trình bên ngoài bằng một ý định.
các sự kiện hệ thống
Khung này xác định một số sự kiện hệ thống hỗ trợ các thao tác này:
Thuộc tính | Mô tả |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) |
Cho biết rằng hệ thống đã nhận được yêu cầu hiển thị màn hình Trang chủ. Trong AAOS, Home (Trang chủ) có thể là một cấu hình linh hoạt của các cửa sổ, chẳng hạn như sự kết hợp của các tiện ích hoặc thậm chí là một bản đồ. Sự kiện này rất quan trọng đối với các hiệu ứng chuyển đổi hoặc hành động phụ thuộc vào việc người dùng xem giao diện chính của màn hình chính. |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) |
Được gửi đi khi một tác vụ hoặc ứng dụng được mở. Sự kiện chung này có thể kích hoạt các thao tác hoặc quá trình chuyển đổi dựa trên việc khởi chạy một ứng dụng. Sự kiện này chứa các mã thông báo như |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
Báo hiệu rằng một tác vụ hoặc ứng dụng đã đóng và đóng vai trò là đối tượng tương ứng với _System_TaskOpenEvent . Điều này cho phép hệ thống phản ứng với các ứng dụng bị loại bỏ. Điều này có thể kích hoạt các hiệu ứng chuyển đổi để đưa một bảng điều khiển về trạng thái mặc định hoặc để bắt đầu các thao tác dọn dẹp khác.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
Được gửi đi khi một bảng điều khiển cụ thể trở nên trống và bao gồm Sự kiện này rất quan trọng để khôi phục lỗi một cách hiệu quả và khởi chạy lại ứng dụng khi nội dung liên kết gặp sự cố hoặc kết thúc đột ngột để ngăn việc hiển thị các bảng điều khiển giao diện người dùng trống. Ví dụ: nếu ứng dụng |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) |
Cho biết hệ thống đang chuyển sang Trình hướng dẫn thiết lập (SUW). Sự kiện này báo hiệu hệ thống đã sẵn sàng và có thể được định cấu hình để khởi chạy các ứng dụng hoặc đưa các bảng điều khiển được chỉ định vào chế độ xem sau khi hệ thống được khởi tạo. Việc chuyển sang trạng thái hệ thống quan trọng như vậy đòi hỏi một sự kiện chuyên biệt để kích hoạt các điều chỉnh hoặc hành động thích hợp trên giao diện người dùng. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) |
Cho biết hệ thống thoát khỏi Trình hướng dẫn thiết lập (SUW). Tương tự như _System_EnterSuwEvent , sự kiện này cho phép hệ thống phản hồi khi quá trình thiết lập hoàn tất bằng cách chạy các ứng dụng mặc định hoặc chuyển sang giao diện người dùng tiêu chuẩn. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ) |
Được kích hoạt khi một ảnh động hoàn tất trong giao diện người dùng. Bạn có thể dùng sự kiện này để kích hoạt các hành động hoặc thay đổi trạng thái tiếp theo tuỳ thuộc vào việc hoàn tất một hiệu ứng chuyển đổi trực quan.
Sự kiện này chứa một mã thông báo cho |