กำหนดค่าเหตุการณ์

เหตุการณ์จะทริกเกอร์การเปลี่ยนแปลงสถานะและเริ่มการดำเนินการ เหตุการณ์ทำหน้าที่เป็นสัญญาณ ซึ่งส่งจาก UI ของระบบหรือจากภายนอกกระบวนการโดยใช้ Intent เหตุการณ์จะแจ้งให้ UI ที่ปรับขนาดได้ทราบเกี่ยวกับการเกิดที่ต้องมีการตอบสนอง

เหตุการณ์ UI ที่ปรับขนาดได้คือสัญญาณของระบบที่ทริกเกอร์โดยการเปลี่ยนแปลงฮาร์ดแวร์หรือซอฟต์แวร์ ซึ่งสามารถเปลี่ยนสถานะของแผงได้ เหตุการณ์เหล่านี้จะแจ้งให้เฟรมเวิร์กทราบถึง เหตุการณ์ที่ต้องมีการตอบสนองใน UI หากต้องการควบคุมสถานะแผงให้แม่นยำยิ่งขึ้น คุณยังกำหนดเหตุการณ์ที่กำหนดเองได้ด้วย นอกเหนือจากเหตุการณ์ของระบบในตัว

โครงสร้างของเหตุการณ์

ตัวระบุที่ไม่ซ้ำกัน (รหัส) ที่จำเป็นจะระบุเหตุการณ์ รหัสนี้จัดหมวดหมู่ ประเภทของการเกิด เช่น _System_AppOpenEvent หรือ _System_PanelEmptyEvent

นอกจากรหัสนี้แล้ว เหตุการณ์ยังอาจมีโทเค็น คู่คีย์-ค่า เพื่อระบุบริบทและรายละเอียดเกี่ยวกับเหตุการณ์ด้วย โทเค็นเหล่านี้ช่วยให้กรองเหตุการณ์ได้ละเอียดยิ่งขึ้น ซึ่งจะช่วยให้ทริกเกอร์การเปลี่ยนผ่านหรือการดำเนินการได้ภายใต้เงื่อนไขที่เฉพาะเจาะจงเท่านั้น

ระบบจะส่งโทเค็นไปยังเหตุการณ์เป็นรายการคู่คีย์-ค่าที่คั่นด้วย เครื่องหมายอัฒภาค (;) ต่อไปนี้คือรายการคีย์ที่ระบบรองรับ

คีย์ คำอธิบาย
panelId ระบุแผง UI เฉพาะที่เชื่อมโยงกับเหตุการณ์
component ระบุชื่อคอมโพเนนต์ เช่น กิจกรรมที่ลิงก์กับเหตุการณ์
package ระบุชื่อแพ็กเกจที่เกี่ยวข้องกับเหตุการณ์
panelToVariantId ระบุตัวแปรเป้าหมายของแผงในบริบทที่เฉพาะเจาะจง ใช้แอตทริบิวต์นี้ เพื่อเรียงต่อภาพเคลื่อนไหวโดยการฟังการเปลี่ยนแผง เช่น ทริกเกอร์การเปลี่ยนแผง B ไปยังสถานะปิดเมื่อแผง A เปลี่ยนเป็นสถานะเปิด

เช่น

"component=com.android.app;panelId=panel1"

ตรรกะการจับคู่เหตุการณ์

เมื่อส่งเหตุการณ์ จะต้องจับคู่กับเกณฑ์ที่กําหนดเพื่อ ทริกเกอร์การเปลี่ยนหรือการกระทํา กระบวนการจับคู่จะเกิดขึ้นใน 2 ขั้นตอน ดังนี้

  • idการจับคู่เหตุการณ์ที่เข้มงวด: idของเหตุการณ์ที่ส่งต้องตรงกับidที่ระบุในตัวกรองเหตุการณ์การเปลี่ยนสถานะหรือการดำเนินการอย่างแน่นอน หาก รหัสไม่ตรงกัน ระบบจะถือว่าเหตุการณ์ไม่ตรงกัน

  • การจับคู่โทเค็นเหตุการณ์บางส่วน: เมื่อรหัสเหตุการณ์ตรงกัน ระบบจะใช้การจับคู่บางส่วน เพื่อประเมินโทเค็นของเหตุการณ์กับโทเค็นที่กําหนดไว้ในตัวกรอง

    หากต้องการให้เกิดการจับคู่ พร็อพเพอร์ตี้เหตุการณ์ (โทเค็น) ทั้งหมดที่ระบุไว้ใน คําจํากัดความของเหตุการณ์การเปลี่ยนผ่านต้องตรงกับพร็อพเพอร์ตี้ที่เกี่ยวข้องในเหตุการณ์ที่ส่งอย่างเคร่งครัด

    อย่างไรก็ตาม เหตุการณ์ที่ส่งอาจมีโทเค็นเพิ่มเติมที่ไม่ได้กำหนดไว้อย่างชัดเจนในตัวกรอง โทเค็นเพิ่มเติมจะไม่ป้องกันการจับคู่ แต่จะ ไม่นำมาพิจารณาในการประเมินการจับคู่

    ในทางกลับกัน หากตัวกรองระบุโทเค็นที่ไม่มีในเหตุการณ์ที่ส่ง หรือหากค่าของโทเค็นที่ตรงกันไม่สอดคล้องกัน ระบบจะไม่ถือว่าเป็นการจับคู่

ตัวอย่างเช่น ลองพิจารณาการเปลี่ยนฉากที่กำหนดให้ทริกเกอร์เมื่อเกิดเหตุการณ์ id="app_open" ขึ้นใน panelId="panel1" ด้วย component="com.android.myapp.Activity"

หากเหตุการณ์ที่ส่งมี id="app_open", panelId="panel1" และ component="com.android.myapp.Activity" ระบบจะจับคู่ ตรงตามเกณฑ์ตัวกรองทั้งหมด และค่าที่เฉพาะเจาะจงกว่าสำหรับ Activity value in the dispatched event is considered a match forcom.android.myapp`

อย่างไรก็ตาม การจับคู่จะล้มเหลวหากเหตุการณ์ที่ส่งเมื่อ id="app_open", panelId="panel1" และ component="com.android.yourapp.Activity" แม้ว่า id และ panelId จะตรงกัน แต่ component ไม่เท่ากับ component ในการเปลี่ยนสถานะ — com.android.myapp — ไม่ตรงกับ com.android.yourapp ในเหตุการณ์ที่ส่ง

ทริกเกอร์การเปลี่ยน

แม้ว่าการเปลี่ยนผ่านอาจเป็นการจับคู่ แต่ไม่ได้หมายความว่าจะมีการทริกเกอร์ ทริกเกอร์การเปลี่ยนฉากได้เพียง 1 รายการต่อเหตุการณ์ UI ที่ปรับขนาดได้มีจุดมุ่งหมายเพื่อทริกเกอร์เฉพาะ การจับคู่ที่ใกล้เคียงที่สุด

เช่น เมื่อการเปลี่ยน 2 รายการตรงกัน โดยรายการหนึ่งมีชื่อคอมโพเนนต์และอีกรายการไม่มีชื่อคอมโพเนนต์ -m ระบบจะทริกเกอร์เฉพาะการเปลี่ยนที่มีชื่อคอมโพเนนต์ เท่านั้น

การส่งและการจัดการเหตุการณ์

เหตุการณ์เป็นหัวใจสำคัญของลักษณะการทำงานแบบไดนามิกของ UI ที่ปรับขนาดได้ เหตุการณ์สามารถ ส่งจาก UI ของระบบหรือจากกระบวนการภายนอกที่มี Intent

เหตุการณ์ของระบบ

เฟรมเวิร์กกำหนดเหตุการณ์ของระบบหลายรายการที่อำนวยความสะดวกในการดำเนินการเหล่านี้

แอตทริบิวต์ คำอธิบาย
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
ระบุว่าระบบได้รับคำขอให้แสดงหน้าจอหน้าแรก ใน AAOS หน้าแรกอาจเป็นการกำหนดค่าหน้าต่างที่ยืดหยุ่น เช่น การรวมวิดเจ็ต หรือแม้แต่แผนที่ เหตุการณ์นี้มีความสําคัญอย่างยิ่งสําหรับการเปลี่ยนผ่านหรือการกระทํา ที่ขึ้นอยู่กับการที่ผู้ใช้ดูอินเทอร์เฟซหน้าแรกหลัก
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

จะส่งเมื่อเปิดงานหรือแอป เหตุการณ์ทั่วไปนี้สามารถ ทริกเกอร์การดำเนินการหรือการเปลี่ยนตามการเปิดตัวแอป

เหตุการณ์นี้มีโทเค็น เช่น panelId และ component

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
สัญญาณที่ระบุว่างานหรือแอปปิดแล้วและทำหน้าที่เป็นคู่กับ _System_TaskOpenEvent ซึ่งช่วยให้ระบบตอบสนองต่อการปิดแอปได้ ซึ่งสามารถทริกเกอร์การเปลี่ยนผ่านเพื่อกลับแผงไปยังสถานะเริ่มต้น หรือเพื่อเริ่มการดำเนินการล้างข้อมูลอื่นๆ
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

ทริกเกอร์เมื่อแผงใดแผงหนึ่งว่างเปล่าและมี panelId เป็นโทเค็นเพื่อให้ระบบกรองทริกเกอร์ ตามแผงที่ว่างเปล่า

เหตุการณ์นี้มีความสําคัญต่อการกู้คืนข้อผิดพลาดที่เชื่อถือได้และการเปิดตัวแอปอีกครั้ง เมื่อเนื้อหาที่เชื่อมโยงเกิดข้อขัดข้องหรือสิ้นสุดโดยไม่คาดคิดเพื่อป้องกัน ไม่ให้แสดงแผง UI ว่างเปล่า

เช่น หากControlBarแอปขัดข้อง คุณสามารถกำหนดค่า และการดำเนินการเพื่อตรวจหาเหตุการณ์นี้ในแผงของแอปและเปิดControlBar อีกครั้งโดยอัตโนมัติ

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
ระบุระบบที่เข้าสู่วิซาร์ดการตั้งค่า (SUW) เหตุการณ์นี้ จะส่งสัญญาณความพร้อมของระบบ และกำหนดค่าให้เปิดแอปหรือแสดง แผงที่กำหนดไว้ได้เมื่อระบบเริ่มต้น การเข้าสู่สถานะระบบที่สำคัญดังกล่าว ต้องใช้เหตุการณ์เฉพาะเพื่อทริกเกอร์ การปรับ UI หรือการดำเนินการที่เหมาะสม
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
ระบุว่าระบบออกจากวิซาร์ดการตั้งค่า (SUW) เหตุการณ์นี้ช่วยให้ระบบตอบสนองต่อการตั้งค่าที่เสร็จสมบูรณ์ได้โดยการเปิดแอปเริ่มต้นหรือเปลี่ยนไปใช้ UI มาตรฐาน ซึ่งคล้ายกับ _System_EnterSuwEvent
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
ทริกเกอร์เมื่อภาพเคลื่อนไหวใน UI เสร็จสมบูรณ์ คุณสามารถใช้เหตุการณ์นี้เพื่อทริกเกอร์การดำเนินการหรือการเปลี่ยนแปลงสถานะที่ตามมาซึ่งขึ้นอยู่กับการเปลี่ยนภาพที่เสร็จสมบูรณ์

เหตุการณ์นี้มีโทเค็นสำหรับ variantId เพื่อระบุว่าแผง จบลงด้วยตัวแปรใดเมื่อสิ้นสุดภาพเคลื่อนไหว