เหตุการณ์จะทริกเกอร์การเปลี่ยนแปลงสถานะและเริ่มการดำเนินการ เหตุการณ์ทำหน้าที่เป็นสัญญาณ ซึ่งส่งจาก 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 for
com.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 ) |
จะส่งเมื่อเปิดงานหรือแอป เหตุการณ์ทั่วไปนี้สามารถ ทริกเกอร์การดำเนินการหรือการเปลี่ยนตามการเปิดตัวแอป เหตุการณ์นี้มีโทเค็น เช่น |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
สัญญาณที่ระบุว่างานหรือแอปปิดแล้วและทำหน้าที่เป็นคู่กับ
_System_TaskOpenEvent ซึ่งช่วยให้ระบบตอบสนองต่อการปิดแอปได้ ซึ่งสามารถทริกเกอร์การเปลี่ยนผ่านเพื่อกลับแผงไปยังสถานะเริ่มต้น
หรือเพื่อเริ่มการดำเนินการล้างข้อมูลอื่นๆ
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
ทริกเกอร์เมื่อแผงใดแผงหนึ่งว่างเปล่าและมี
เหตุการณ์นี้มีความสําคัญต่อการกู้คืนข้อผิดพลาดที่เชื่อถือได้และการเปิดตัวแอปอีกครั้ง เมื่อเนื้อหาที่เชื่อมโยงเกิดข้อขัดข้องหรือสิ้นสุดโดยไม่คาดคิดเพื่อป้องกัน ไม่ให้แสดงแผง UI ว่างเปล่า เช่น หาก |
_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 เสร็จสมบูรณ์ คุณสามารถใช้เหตุการณ์นี้เพื่อทริกเกอร์การดำเนินการหรือการเปลี่ยนแปลงสถานะที่ตามมาซึ่งขึ้นอยู่กับการเปลี่ยนภาพที่เสร็จสมบูรณ์
เหตุการณ์นี้มีโทเค็นสำหรับ |