การเปลี่ยน Shell

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

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

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

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

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

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

มุมมองตาราง

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

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

มุมมองแบบละเอียด

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

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

เป้าหมาย

เป้าหมายคือองค์ประกอบที่เกี่ยวข้องกับการเปลี่ยน (ปกติคือกิจกรรมหรืองาน) สําหรับเป้าหมายแต่ละรายการ เราจะบันทึกข้อมูลต่อไปนี้

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