เพิ่มประสิทธิภาพการใช้หน่วยความจำสำหรับหน้าปัด

Wear OS จะปรับปรุงอายุการใช้งานแบตเตอรี่ด้วยการติดตามการใช้หน่วยความจำ หน้าปัดที่ใช้รูปแบบหน้าปัดมีขีดจำกัดหน่วยความจำตามหลักเกณฑ์ด้านคุณภาพของแอป Wear OS ดังนี้

  • โหมดแอมเบียนท์: การใช้หน่วยความจำสูงสุด 10 MB
  • โหมดอินเทอร์แอกทีฟ: การใช้หน่วยความจําสูงสุด 100 MB

การคํานวณการใช้งานหน่วยความจํา

ระบบจะดำเนินการต่อไปนี้เพื่อคํานวณการใช้หน่วยความจําสําหรับแบบอักษรรูปภาพหรือบิตแมปในหน้าปัดโดยใช้รูปแบบหน้าปัด

  1. decompress รูปภาพหรือแบบอักษร
  2. ตรวจสอบว่าการเพิ่มประสิทธิภาพต่อไปนี้มีผลหรือไม่
    • การปรับขนาดให้พอดีกับหน้าจอมากขึ้น
    • ครอบตัดพิกเซลที่โปร่งใส
    • การสุ่มตัวอย่างลงเป็น RGB565 โดยไม่มีการสูญเสียความเที่ยงตรง

ระบบจะคำนวณขนาดตามกล่องขอบเขตที่ได้ดังนี้

  • สำหรับรูปภาพและแบบอักษรที่ใช้ RGBA8888: 4 x กว้าง x สูง
  • สำหรับรูปภาพและแบบอักษรที่ใช้ RGB565: 2 x ความกว้าง x ความสูง
  • สำหรับรูปภาพและแบบอักษรที่ใช้การกำหนดค่าบิตแมป ALPHA_8: ความกว้าง x ความสูง

โหมดอินเทอร์แอกทีฟ

ระบบจะคํานวณการใช้หน่วยความจําสําหรับโหมดอินเทอร์แอกทีฟโดยรวมค่าต่อไปนี้

  1. ขนาดของแบบอักษรเวกเตอร์ที่ไม่ได้ประมวลผล
  2. การใช้งานแบบอักษรเริ่มต้นของระบบโดยประมาณ
  3. ขนาดรวมของรูปภาพและแบบอักษรบิตแมปหลังจากครอบตัด ปรับขนาด และจัดรูปแบบใหม่

การกำหนดค่า

สำหรับหน้าปัดที่มีการกำหนดค่า ระบบจะพยายามคำนวณขนาดรวมของทรัพยากรหน้าปัดในการกำหนดค่าต่างๆ หากจํานวนชุดค่าผสมมีจํานวนมาก ระบบอาจประเมินจํานวนทรัพยากรที่ใช้พร้อมกันสูงเกินไป

โหมดแอมเบียนท์และเลเยอร์

ระบบจะถือว่าโหมดแอมเบียนท์ใช้เลเยอร์แบบเต็มหน้าจอได้สูงสุด 3 เลเยอร์ โดย 2 เลเยอร์เป็นแบบคงที่ เลเยอร์ดังกล่าว ได้แก่

  1. พื้นหลังของหน้าปัด ระบบจะถือว่าภาพนี้เป็นรูปภาพเดียว ไม่ว่าพื้นหลังจะมีรูปภาพกี่รูปก็ตาม
  2. ชิ้นส่วนที่เคลื่อนไหว เช่น มือ จอแสดงผลดิจิทัล หรือองค์ประกอบแบบไดนามิก
  3. องค์ประกอบที่เหลือจากไฟล์ XML ต้นทาง

แบบอักษรบิตแมปขนาดใหญ่มักใช้หน่วยความจำมากที่สุดในโหมดแอมเบียนท์

วิธีลดการใช้งานหน่วยความจํา

ใช้การเพิ่มประสิทธิภาพต่อไปนี้เพื่อลดการใช้หน่วยความจำ

ครอบตัดและปรับขนาดแบบอักษรบิตแมป

ครอบตัดรูปภาพและวัตถุ BitmapFont ให้พอดีกับขนาดการแสดงผล

Wear OS จะวาดหน้าปัดโดยที่ไม่ต้องบีบอัดรูปภาพทั้งหมด รูปภาพขนาดเต็มเกือบว่างเปล่าอาจใช้พื้นที่ในดิสก์ 3 KB แต่ใช้พื้นที่ 750 KB ขึ้นไปบนหน้าจอขนาด 450 พิกเซล x 450 พิกเซล

ใช้ความสูงของแบบอักษรบิตแมปที่สอดคล้องกัน

เมื่อใช้ BitmapFont ให้ตรวจสอบว่ารูปภาพทั้งหมดของตัวละครมีระดับความสูงเท่ากัน ในทำนองเดียวกัน โปรดตรวจสอบว่ารูปภาพทั้งหมดของคำมีความสูงเท่ากัน

ใช้ขนาดเฟรมที่สอดคล้องกันในภาพเคลื่อนไหว

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

เทคนิคนี้จะลดขนาดของกล่องขอบเขตที่คำนวณแล้วของภาพเคลื่อนไหว

กรองรูปภาพที่ซ้ำกันออก

หากต้องการแสดงรูปภาพหลายครั้ง ให้ใส่ทรัพยากรรูปภาพเพียงรายการเดียวและอ้างอิงรูปภาพนั้นหลายครั้ง

แสดงความคืบหน้าโดยใช้ส่วนโค้ง

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

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

หากต้องการแสดงเส้นที่ไม่ต่อเนื่อง เช่น เพื่อให้ได้รูปลักษณ์แบบนาฬิกาดิจิทัลย้อนยุค ให้ใช้พร็อพเพอร์ตี้ขีดกลางสำหรับออบเจ็กต์ Stroke หรือการวางซ้อนรูปภาพมาสก์แบบโปร่งแสง

วางเข็มนาฬิกาและข้อมูลแทรกไว้ที่ท้ายไฟล์ต้นฉบับ

ระบบจะวาดโหนด XML ตามลําดับที่แสดงใน XML ต้นทาง การวางเข็มนาฬิกาและข้อมูลแทรกไว้ที่ท้ายที่สุดจะช่วยให้ระบบตัดเลเยอร์ทั้งหมดออกจากการคำนวณหน่วยความจำของโหมดแอมเบียนท์ได้

ประเมินการใช้งานหน่วยความจำของหน้าปัด

หากต้องการวัดการใช้งานหน่วยความจำของหน้าปัด ให้ใช้เครื่องมือประเมินร่องรอยหน่วยความจำ ซึ่งมีอยู่ในที่เก็บ watchface ใน GitHub