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

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

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

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

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

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

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

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

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

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

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

การกำหนดค่า

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

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

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

  1. พื้นหลังของหน้าปัด ระบบจะถือว่านี่คือรูปภาพ 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="25" y="25">
    <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="#654456" thickness="10" />
    </Arc>
</PartDraw>

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

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

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

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

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