Thiết lập sự kiện

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 id sự kiện nghiêm ngặt: id của sự kiện được gửi phải khớp chính xác với id đượ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"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ù idpanelId 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ư panelIdcomponent.

_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 panelId dưới dạng mã thông báo để các điều kiện kích hoạt được lọc theo bảng điều khiển trống.

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 ControlBar gặp sự cố, bạn có thể định cấu hình và hành động để phát hiện sự kiện này trên bảng điều khiển của ứng dụng đó và tự động khởi chạy lại ControlBar

.
_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 variantId để cho biết biến thể mà bảng điều khiển kết thúc ở cuối ảnh động.