การเปลี่ยน Shell

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

การติดตามการเปลี่ยนภาพมีข้อมูลเกี่ยวกับการเปลี่ยนภาพทุกรายการภายในเชลล์ WindowManager (WM) จากทั้งเซิร์ฟเวอร์ระบบและเชลล์ Droidfood จะเปิดใช้การติดตามนี้อย่างถาวร และฝังไว้ในรายงานข้อบกพร่องโดยอัตโนมัติ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการรวบรวมการติดตามได้ที่การเปลี่ยนเชลล์

โปรแกรมดูการเปลี่ยนภาพของ Winscope จะแสดงข้อมูลนี้สําหรับการติดตามการเปลี่ยนภาพ ที่มีทั้งข้อมูลฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ โปรแกรมดูประกอบด้วย มุมมองบันทึกตารางทางด้านซ้าย ซึ่งแสดงข้อมูลการเปลี่ยนระดับสูง และ มุมมองแบบละเอียดทางด้านขวาสำหรับการเปลี่ยนแต่ละรายการ

การวิเคราะห์การติดตามการเปลี่ยนเชลล์

รูปที่ 1 การวิเคราะห์การติดตามการเปลี่ยนเชลล์

มุมมองตาราง

มุมมองตารางประกอบด้วยข้อมูลต่อไปนี้

  • รหัส: รหัสการเปลี่ยนสถานะที่สร้างขึ้นเพื่อการแก้ไขข้อบกพร่องเท่านั้น
  • ประเภท: ประเภทการเปลี่ยนตามที่กำหนดไว้ใน Transitions.java
  • เวลาส่ง: การประทับเวลาที่ส่งการเปลี่ยนสถานะจากเซิร์ฟเวอร์ไปยังเชลล์ เพื่อจัดการ
  • เวลาส่ง: การประทับเวลาเมื่อส่งทรานซิชันไปยัง ตัวแฮนเดิลเพื่อเริ่มเล่น
  • ระยะเวลา: เวลาที่ใช้ในการเปลี่ยนจากเริ่มเล่นจนจบ
  • สถานะ: หากการเปลี่ยนผ่านมีสถานะดังนี้
    • เล่นแล้ว:: เล่นแล้ว
    • ABORTED: ยกเลิกก่อนเล่น คุณยกเลิกการเปลี่ยนฉากได้จากเชลล์หรือฝั่ง WM
    • ผสาน: ผสานโดยตัวแฮนเดิลการเปลี่ยนฉากเข้ากับการเปลี่ยนฉากอื่นที่กำลังเล่นอยู่ (ตัวแฮนเดิลจะกำหนดวิธีจัดการการเปลี่ยนฉากนี้)

มุมมองโดยละเอียด

นอกจากรายละเอียดในมุมมองตารางแล้ว มุมมองการเปลี่ยนผ่านโดยละเอียด ในส่วนการเปลี่ยนผ่านที่เลือกยังมีข้อมูลต่อไปนี้

  • handler: ตัวแฮนเดิลการเปลี่ยนที่จัดการภาพเคลื่อนไหวนี้
  • createTimeNs: การประทับเวลาที่สร้างทรานซิชันในฝั่งเซิร์ฟเวอร์ WM
  • finishTimeNs: การประทับเวลาเมื่อระบบจะแจ้งให้ฝั่งเซิร์ฟเวอร์ของ WM ทราบว่าการเปลี่ยนผ่านทำงานเสร็จแล้วในฝั่งเชลล์
  • endTransactionId: ธุรกรรม SurfaceFlinger สุดท้ายที่รวมอยู่ในการเปลี่ยนภาพนี้
  • startTransactionId: ธุรกรรม SurfaceFlinger เริ่มต้นรวมอยู่ในการเปลี่ยนผ่านนี้
  • targets: รายชื่อผู้เข้าร่วมการเปลี่ยนผ่าน
  • type: ประเภทการเปลี่ยน ตามที่กำหนดไว้ใน Transitions.java

เป้าหมาย

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

  • layerId: เลเยอร์ที่กำลังเคลื่อนไหว (จากลำดับชั้น SurfaceFlinger)
  • mode: ประเภทภาพเคลื่อนไหวที่ดำเนินการในเลเยอร์นี้
  • windowId: หน้าต่างที่กำลังเคลื่อนไหว (จากลำดับชั้นของ WindowManager)
  • flags: ชุดใหม่ของฟีเจอร์ที่ใช้กับเลเยอร์