ปรับปรุงประสิทธิภาพของหน้าปัดด้วยการเร่งฮาร์ดแวร์

แอป Wear OS ที่ใช้มุมมองมาตรฐานจะได้รับประโยชน์จากระบบเร่งฮาร์ดแวร์โดยอัตโนมัติ การแสดงภาพกราฟิก แต่หน้าปัดมักมีการใช้งานโดยใช้ ทำให้ไม่มีการเร่งฮาร์ดแวร์โดยอัตโนมัติ

เหตุใดจึงควรใช้แคนวาสที่มีการเร่งฮาร์ดแวร์สำหรับหน้าปัดของคุณ

ในกรณีส่วนใหญ่ หน้าปัดของคุณจะแสดงผลที่อัตราเฟรมสูงขึ้นเมื่อใช้ แคนวาสที่มีการเร่งฮาร์ดแวร์ ภาพเคลื่อนไหวและการเปลี่ยนภาพในอัตราเฟรมที่สูงขึ้น มีลักษณะเรียบเนียนขึ้น เพื่อให้ประสบการณ์ของผู้ใช้ดีขึ้น

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

หน้าปัดของฉันใช้การเร่งฮาร์ดแวร์หรือไม่

คุณสามารถตรวจสอบว่าหน้าปัดของคุณใช้การเร่งฮาร์ดแวร์หรือไม่ โดยใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์หรือ adb

ตรวจสอบโดยใช้ตัวเลือกสำหรับนักพัฒนาแอป

หากต้องการใช้ตัวเลือกสำหรับนักพัฒนาแอปเพื่อตรวจสอบว่าหน้าปัดของคุณใช้การเร่งฮาร์ดแวร์หรือไม่ ให้ทำตามขั้นตอนต่อไปนี้

  1. ในอุปกรณ์ Wear OS ให้ไปที่การตั้งค่า > ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์
  2. เปิดใช้แก้ไขข้อบกพร่องในการทำโปรไฟล์ GPU

    ตัวเลือกนี้จะวาดซ้อนทับบนพื้นผิวที่มองเห็นได้ โดยแสดง 1 ตำแหน่งต่อ 1 พื้นผิว เพื่อแสดงระยะเวลาที่ใช้ในการแสดงผล GPU แต่ละขั้น แพลตฟอร์ม

  3. กลับไปที่หน้าปัดในอุปกรณ์

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

ตรวจสอบโดยใช้ adb

หากต้องการใช้ adb เพื่อตรวจสอบว่าหน้าปัดของคุณใช้การเร่งฮาร์ดแวร์หรือไม่ ให้ทำตามขั้นตอนต่อไปนี้

  1. ในอุปกรณ์ Wear OS ให้เปลี่ยนหน้าปัดเป็นหน้าปัดที่ต้องการ เพื่อทดสอบ
  2. ให้หน้าปัดทำงานเป็นเวลา 2-3 วินาทีในโหมดอินเทอร์แอกทีฟ
  3. เรียกใช้คำสั่ง adb ต่อไปนี้เพื่อตรวจสอบว่าหน้าปัดของคุณใช้หรือไม่ การเร่งฮาร์ดแวร์:

    adb shell dumpsys gfxinfo [package-name]

หลังจากเรียกใช้คำสั่ง คุณจะได้รับเอาต์พุตในลักษณะนี้ ตัวอย่าง:

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

ในเอาต์พุตตัวอย่างนี้ ให้สังเกตบรรทัดที่เขียนว่า Total frames rendered โดยทั่วไป หากเอาต์พุตแสดงเฟรมทั้งหมดที่แสดงผลมากกว่า 0 ระบบจะประมวลผล หน้าปัดใช้ผืนผ้าใบแบบเร่ง ไม่เช่นนั้น จำนวนเฟรมทั้งหมดที่แสดงผล และข้อมูลเฟรมอื่นๆ ในรายงานตามปกติจะเป็น 0

แต่เนื่องจาก gfxinfo เป็นเอาต์พุตสำหรับแพ็กเกจแบบเต็มของแอปคุณ คุณจึงอาจ ดูข้อมูลเวลาที่ใช้ในการแสดงผลเฟรมบางอย่างจากสิ่งอื่นที่ไม่ใช่การเร่งความเร็วด้วยฮาร์ดแวร์ เช่น Activity ที่แอปใช้สำหรับหน้าจอการกำหนดค่า ถึง บอกความแตกต่าง ตรวจสอบให้แน่ใจว่าหน้าปัดมีเพียงพื้นผิวเดียวที่ แสดง แล้วเรียกใช้คำสั่ง adb shell dumpsys gfxinfo อีกครั้งเพื่อตรวจสอบว่า ค่าของ Total frames rendered จะเพิ่มขึ้น

แนวทางปฏิบัติแนะนำ

ทำตามแนวทางปฏิบัติแนะนำเหล่านี้เพื่อให้มั่นใจได้ว่า ผู้ใช้

ยืดระยะเวลาการใช้งานแบตเตอรี่ให้ได้มากที่สุด

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

ใช้การดำเนินการวาดภาพที่รองรับ

ระบบไม่รองรับการดำเนินการวาดบางอย่างเมื่อใช้การเร่งฮาร์ดแวร์ สำหรับข้อมูลเกี่ยวกับอุปกรณ์ที่รองรับ โปรดดูที่ฮาร์ดแวร์ การเร่งความเร็ว หากคุณมีเส้นทางของโค้ดขนาดเล็กที่ใช้การดำเนินการที่ไม่ได้รับการสนับสนุน คุณสามารถสร้าง แคนวาสที่หนุนหลังบิตแมป แล้ววาดบิตแมปลงในผืนผ้าใบของหน้าปัด โดยใช้ canvas.drawBitmap()

รักษาความเข้ากันได้เมื่อใช้การเร่งฮาร์ดแวร์

การเร่งฮาร์ดแวร์พร้อมใช้งานในอุปกรณ์ Wear OS ที่ใช้ Android 9 (API ระดับ 28) ขึ้นไป หากต้องการเลี่ยงการดำเนินการวาดที่เจาะจงในเวอร์ชันที่เก่ากว่า อุปกรณ์ที่ไม่สามารถใช้งานการเร่งฮาร์ดแวร์ หรือการวาดที่ไม่มีการสนับสนุน การดำเนินการใน Canvas ที่เร่งการแสดงผลด้วยฮาร์ดแวร์ คุณสามารถตรวจสอบ Canvas.isHardwareAccelerated() เพื่อให้มีฟังก์ชันการทำงานอื่น