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

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

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

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

ตัวระบุที่ไม่ซ้ำกัน (รหัส) ที่จำเป็นจะระบุเหตุการณ์ รหัสนี้จัดหมวดหมู่ ประเภทของการเกิด เช่น _System_TaskOpenEvent หรือ _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) เหตุการณ์นี้คล้ายกับ _System_EnterSuwEvent ซึ่งช่วยให้ระบบตอบสนอง ต่อการตั้งค่าที่เสร็จสมบูรณ์ได้โดยการเปิดแอปเริ่มต้นหรือ เปลี่ยนไปใช้ UI มาตรฐาน
_System_OnAnimationEndEvent

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

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