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

เพื่อยืดระยะเวลาการใช้งานแบตเตอรี่ของอุปกรณ์ Wear OS ให้นานที่สุดระบบ จะคำนวณการใช้งานหน่วยความจำ ในฐานะส่วนหนึ่งของคุณภาพของแอป Wear OS หน้าปัดที่ใช้ Watch Face Format มีการจำกัดการใช้งาน ปริมาณหน่วยความจำที่ใช้ได้ ขึ้นอยู่กับสถานะปัจจุบันของนาฬิกา ดังนี้

  • ในโหมดแอมเบียนท์ หน้าปัดจะต้องมีขนาดไม่เกิน 10 MB ความทรงจำ
  • ในโหมดอินเทอร์แอกทีฟ หน้าปัดจะต้องมีขนาดไม่เกิน 100 MB ความทรงจำ

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

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

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

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

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

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

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

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

การกำหนดค่า

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

กรองข้อมูลที่ซ้ำกันออก

หากหน้าปัดแสดงสำเนารูปภาพเดียวกันหลายสำเนา ให้ใส่เพียง 1 สำเนา สำเนาของรูปภาพนั้นในไดเรกทอรีทรัพยากร และอ้างถึงรูปภาพหลายรูป ครั้ง

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

หากต้องการจำลองแถบความคืบหน้าที่เสร็จสมบูรณ์หลังจากผ่านไป 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