Sự kiện kích hoạt các thay đổi về trạng thái và bắt đầu các hành động. Sự kiện hoạt động như 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 ý định. Sự kiện thông báo cho Giao diện người dùng có thể mở rộng về các trường hợp cần phản hồi.
Sự kiện Giao diện người dùng có thể mở rộng là 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. Các sự kiện này thông báo cho khung về các trường hợp cần phản hồi của giao diện người dùng. Để kiểm soát trạng thái của bảng điều khiển chính xác hơ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 sự kiện
Giá trị nhận dạng (ID) duy nhất bắt buộc xác định một sự kiện. ID này phân loại loại trường hợp, chẳng hạn như _System_TaskOpenEvent hoặc _System_PanelEmptyEvent.
Ngoài ID này, sự kiện có thể tuỳ ý mang theo 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 quá trình chuyển đổi hoặc hành động trong các đ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 (;). Dưới đâ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ể của 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ư 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 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 điều khiển B sang trạng thái đóng khi bảng điều khiển A được chuyển sang trạng thái mở. |
Ví dụ:
"component=com.android.app;panelId=panel1"
Logic đối sánh sự kiện
Khi một sự kiện được gửi, sự kiện đó phải được đối sánh với các tiêu chí đã xác định để kích hoạt quá trình chuyển đổi hoặc hành động. Quá trình đối sánh diễn ra theo 2 giai đoạn:
Đối sánh
idsự kiện nghiêm ngặt:idcủ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 ID không khớp, sự kiện sẽ được coi là không khớp.Đối sánh mã thông báo sự kiện một phần: Khi ID sự kiện khớp, hệ thống sẽ sử dụng đối sánh một phần để đánh giá mã thông báo của sự kiện với mã thông báo được xác định trong bộ lọc.
Để đối sánh, tất 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.
Điều đó có nghĩa là 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. Mã thông báo bổ sung không ngăn chặn quá trình đối sánh. Thay vào đó, các mã thông báo này sẽ bị bỏ qua trong quá trình đánh giá đối sánh.
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ã thông báo đối sánh không khớp, thì mã thông báo đó sẽ không được coi là đối sánh.
Ví dụ: hãy xem xét quá trình 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 sự kiện được gửi có id="app_open", panelId="panel1" và
component="com.android.myapp.Activity", thì sẽ có một đối sánh. Tất 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 forcom.android.myapp`.
Tuy nhiên, quá trình đối sánh sẽ không thành công 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, 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 quá trình chuyển đổi
Mặc dù quá trình chuyển đổi có thể là đối sánh, nhưng điều này không có nghĩa là quá trình chuyển đổi đó được kích hoạt. Bạn chỉ có thể kích hoạt một quá trình chuyển đổi cho mỗi sự kiện. Giao diện người dùng có thể mở rộng chỉ nhằm mục đích kích hoạt đối sánh gần nhất.
Ví dụ: khi 2 quá trình chuyển đổi (một quá trình có tên thành phần và một quá trình không có tên thành phần -m) là đối sánh, thì chỉ quá trình 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à trung tâm của 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 ý định.
Sự kiện hệ thống
Khung xác định một số sự kiện hệ thống giúp thực hiện các hành động sau:
| 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 Chính. Trong AAOS, Chính có thể là cấu hình linh hoạt của các cửa sổ, chẳng hạn như tổ hợp các виджет hoặc thậm chí là bản đồ. Sự kiện này rất quan trọng đối với các quá trình 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 trang chủ. |
_System_TaskOpenEvent( SYSTEM_TASK_OPEN_EVENT_ID) |
Được gử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 hành động hoặc quá trình chuyển đổi dựa trên việc khởi chạy ứ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ác của
_System_TaskOpenEvent. Điều này cho phép hệ thống phản ứng với các ứng dụng
bị đóng. Điều này có thể kích hoạt quá trình chuyển đổi để trả bảng điều khiển về trạng thái mặc định
trạng thái hoặc bắt đầu các hành động dọn dẹp khác.
|
_System_TaskPanelEmptyEvent( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID) |
Được gử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ạnh mẽ 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 trống của giao diện người dù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 trạng thái sẵn sàng của hệ thống và có thể được định cấu hình để khởi chạy ứ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 chạy. 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 riêng biệt để kích hoạt các điều chỉnh hoặc hành động thích hợp của giao diện người dùng. |
_System_ExitSuwEvent( SYSTEM_EXIT_SUW_EVENT_ID) |
Cho biết hệ thống đang 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
việc hoàn tất quy trình thiết lập bằng cách khởi 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 ảnh động hoàn tất trong giao diện người dùng. Bạn có thể sử 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 phụ thuộc vào việc hoàn tất quá trình chuyển đổi hình ảnh.
Sự kiện này chứa mã thông báo cho |