ประหยัดพลังงานและแบตเตอรี่

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

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

หากต้องการปรับปรุงประสิทธิภาพด้านพลังงานของแอป ให้ทำตามแนวทางปฏิบัติแนะนำด้านการออกแบบต่อไปนี้

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

    หากอุปกรณ์กำลังชาร์จและมีการเชื่อมต่อ Wi-Fi ให้กำหนดเวลาให้งานดึงข้อมูล รูปภาพ และการอัปเดตที่ผู้ใช้มีแนวโน้มที่จะต้องการดูในแอปของคุณมาไว้ล่วงหน้า

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

ตรวจสอบการใช้งานแบตเตอรี่ในช่วงเวลาต่างๆ

หากต้องการวิเคราะห์สถิติแบตเตอรี่ของอุปกรณ์ Wear OS ที่เรียกใช้แอป ให้ป้อนคำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัลในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์

adb shell dumpsys batterystats

ไลบรารีใน GitHub มีตัวแยกวิเคราะห์สถิติแบตเตอรี่ ซึ่ง อาจมีประโยชน์ในการเรียกใช้พร้อมกับคำสั่งนี้

เหตุการณ์ที่ส่งผลต่อระยะเวลาการใช้งานแบตเตอรี่

ก่อนที่จะคิดถึงแอปของคุณโดยเฉพาะ คุณควรคิดถึงเหตุการณ์ที่ใช้พลังงานในอุปกรณ์ Wear OS โดยทั่วไป

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

เหตุการณ์ ผลกระทบต่อระยะเวลาการใช้งานแบตเตอรี่ วิธีลดผลกระทบ
เข้าถึงเครือข่าย รวมถึง LTE และ Wi-Fi สูงมาก เลื่อนการเข้าถึงเครือข่ายที่ไม่จำเป็นออกไปจนกว่าจะมีการชาร์จอุปกรณ์
เปิดหน้าจอและเริ่มโหมดอินเทอร์แอกทีฟ สูง อย่ากระตุ้นให้ผู้ใช้เปิดหน้าจอไว้นานกว่าที่ จำเป็น มอบประสบการณ์การใช้งานที่ใช้ โหมดเปิดหน้าจอตลอดเวลา หรือที่เรียกว่าโหมดแอมเบียนท์
เข้าถึงเซ็นเซอร์ GPS สูง รอจนกว่าผู้ใช้จะขอเข้าถึง GPS หากเป็นไปได้
รักษาการใช้งาน CPU ให้สูง สูง ใช้ โฟลว์โดยใช้ Jetpack Compose
เข้าถึงเซ็นเซอร์วัดอัตราการเต้นของหัวใจ ปานกลาง ใช้เวลาที่โปรเซสเซอร์ทำงานเมื่อ ได้รับ Callback จาก Sensor API เช่น เมื่อใช้ บริการข้อมูลสุขภาพใน Wear OS
เข้าถึงอุปกรณ์อื่นผ่านบลูทูธ ปานกลาง รักษาระยะเวลาเซสชันให้สั้น
เก็บ Wakelock ไว้ ปานกลาง ลดการสร้าง Wakelock ด้วยตนเองและใช้ WorkManager.

ลดเวลาเปิดหน้าจอ

ในแอป Wear OS ให้ทำตามหลักการใช้งานหน้าจอต่อไปนี้

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

ลดการใช้งาน CPU

ในแอป Wear OS ให้ทำตามหลักการใช้งาน CPU ต่อไปนี้

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

ลด Wakelock

ในกรณีส่วนใหญ่ ให้หลีกเลี่ยงการดำเนินการใดๆ ที่ป้องกันไม่ให้แอปเข้าสู่โหมดสลีป เช่น Wakeloack ตัวอย่างเช่น ในแอปสุขภาพและแอปฟิตเนส การออกกำลังกายที่ใช้เวลานานไม่จำเป็นต้องใช้ Wakelock ใช้เวลาที่โปรเซสเซอร์ทำงานเมื่อได้รับ Callback จาก Sensor API เช่น เมื่อใช้บริการข้อมูลสุขภาพใน Wear OS

มีบางกรณีที่อนุญาตให้รับ Wakelock ได้ เช่น เมื่อแอปของคุณทำอย่างใดอย่างหนึ่งต่อไปนี้

  • เล่นสื่อในเบื้องหลัง
  • ใช้ WorkManager หรือ JobScheduler (ระบบจะเก็บ Wakelock ไว้ในนามของคุณเมื่อเรียกใช้งานในเบื้องหลัง)

หากต้องการแก้ไขข้อบกพร่องของ Wake Lock ในเครื่อง ให้ใช้เครื่องมือตรวจสอบงานเบื้องหลัง System Tracing หรือ adb shell dumpsys batterystats ของ Android Studio เพื่อตรวจสอบ Wake Lock ที่ใช้เวลานานแต่ละรายการ รวมถึงข้อมูลสรุปของจำนวนทั้งหมดและระยะเวลาของ Wake Lock ที่เก็บไว้ เปรียบเทียบจำนวนและระยะเวลาของ Wakelock ที่แอปของคุณเก็บไว้กับรูปแบบการใช้งานแบบโต้ตอบของแอป

  • ตรวจสอบ Wakelock ที่ไม่คาดคิด
  • หากระยะเวลานานกว่าที่คาดไว้ ให้พิจารณาว่างานถูกบล็อกเนื่องจากมีการพึ่งพาบางอย่างหรือไม่ เช่น ความพร้อมใช้งานของเครือข่าย

ตรวจสอบวิธีที่แอปเข้าสู่สถานะไม่ทำงาน

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

  • หน้าจอจะปิดและอุปกรณ์เข้าสู่โหมดแอมเบียนท์
  • ผู้ใช้ปัดเพื่อปิดแอป

หากต้องการวิเคราะห์กิจกรรมของแอป ให้ใช้เครื่องมือที่แสดงในส่วนต่อไปนี้

Power Profiler

คุณเข้าถึง Power Profiler ได้ในเมนู Android Studio โดย เลือก ดู > หน้าต่างเครื่องมือ > Profiler:

  1. ตรวจสอบการติดตามของระบบเมื่อหน้าจอจะปิดและอุปกรณ์เข้าสู่โหมดแอมเบียนท์
  2. มองหางานที่ยังคงดำเนินการอยู่และระดับการใช้งาน CPU ของอุปกรณ์

Perfetto

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

กำหนดเหตุการณ์ที่กำหนดเองเพื่อทำเครื่องหมายเหตุการณ์สำคัญของแอป รวมถึง เหตุการณ์เฉพาะโดเมน สำหรับแอปสื่อ เหตุการณ์นี้จะรวมถึงงานต่างๆ เช่น การดึงเพลย์ลิสต์ การดาวน์โหลดรายการสื่อที่เฉพาะเจาะจง การเริ่มเล่น และการหยุดเล่น การกำหนดเหตุการณ์เหล่านี้จะช่วยให้คุณเห็นเหตุการณ์ใน Perfetto และเปรียบเทียบเวลาที่เกิดเหตุการณ์กับ CPU และการใช้พลังงานของแอปได้

นอกจากนี้ คุณยังใช้ Android CLI เพื่อติดตั้งandroid-profiler skill (android skills add android-profiler) ซึ่งช่วยให้ AI Agent บันทึก การติดตามของระบบ Perfetto จากบรรทัดคำสั่งและวิเคราะห์รางพลังงาน Wake Lock และสถานะระงับของอุปกรณ์ได้

วิเคราะห์งานที่กำหนดเวลาไว้ของแอป

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

ใช้ เครื่องมือตรวจสอบงานในเบื้องหลัง (ดู > หน้าต่างเครื่องมือ > การตรวจสอบแอป) ของ Android Studio หรือเรียกใช้ adb shell dumpsys jobscheduler และ adb shell dumpsys batterystats เพื่อตรวจสอบการดำเนินการของงานที่กำหนดเวลาไว้และ Worker ตรวจสอบความถี่ในการดำเนินการและระยะเวลารวม

  • หากงานทำงานบ่อยมาก ให้ลองลดความถี่นี้
  • ตรวจสอบว่าเวลารวมในการดำเนินการตรงกับที่คุณคาดไว้และไม่นานกว่าที่คาดไว้มากนัก

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

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

เซ็นเซอร์

อุปกรณ์ Wear OS มีเซ็นเซอร์หลายประเภท เช่น GPS ในกรณีส่วนใหญ่ ให้ใช้ บริการข้อมูลสุขภาพใน Wear OS แทนการโต้ตอบกับ SensorManager โดยตรง ในหลายกรณี บริการข้อมูลสุขภาพจะจัดกลุ่มข้อมูลอย่างชาญฉลาดเพื่อปรับปรุงประสิทธิภาพของแบตเตอรี่

หากต้องการวิเคราะห์การใช้งานเซ็นเซอร์ในแอป ให้เรียกใช้คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัลในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์

adb shell dumpsys sensorservice

ผลลัพธ์ของคำสั่งนี้จะแสดงข้อมูลต่อไปนี้

  • การลงทะเบียนเซ็นเซอร์ปัจจุบันและก่อนหน้า
  • การกำหนดค่าเซ็นเซอร์ รวมถึงการจัดกลุ่มหากมีการตั้งค่า
  • ข้อมูลจากการสุ่มตัวอย่างล่าสุด

ทดสอบการยกเลิกการลงทะเบียนจากเซ็นเซอร์

หากต้องการตรวจสอบว่าแอปหยุดดึงข้อมูลเซ็นเซอร์ตามที่คาดไว้หรือไม่ ให้ทดสอบสถานการณ์ต่อไปนี้

  1. ปัดเพื่อปิดแอป
  2. แตะหน้าจอด้วยฝ่ามือ การดำเนินการนี้จะปิดหน้าจอหรือทำให้หน้าจอเข้าสู่โหมดแอมเบียนท์

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

ชั้นข้อมูล

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

แนวทางปฏิบัติแนะนำเพิ่มเติมสำหรับการใช้ Data Layer API มีดังนี้

  • รอจนกว่าแอปจะทำงานอยู่ก่อนที่จะตั้งค่า Listener โดยใช้ WearableListenerService
  • อย่าใช้ Data Layer API เพื่อ Ping นาฬิกาเป็นระยะๆ เพื่อตรวจสอบว่ามีอุปกรณ์หรือแอปที่ใช้ร่วมกันพร้อมใช้งานหรือไม่ การส่งข้อความซ้ำๆ จะทำให้แอปทำงานวิทยุและกระบวนการของแอประยะไกล ซึ่งจะทำให้แบตเตอรี่ของอุปกรณ์หมดเร็วกว่าที่จำเป็น ให้ใช้ CapabilityClient เพื่อ ตรวจหาความพร้อมใช้งานและ ความสามารถของอุปกรณ์ หรือส่งข้อความเมื่อมีการเปลี่ยนแปลงสถานะเท่านั้น
  • ส่งการเปลี่ยนแปลงสถานะแทนการกำหนดค่าการอัปเดตอย่างรวดเร็ว การเปลี่ยนแปลงสถานะเหล่านี้ช่วยให้อุปกรณ์ Wear OS ทำการคำนวณข้อมูลในเครื่องได้ เช่น เมื่อเซสชันการออกกำลังกายเริ่มต้นขึ้น

    ส่งเฉพาะการเปลี่ยนแปลงสถานะที่อัปเดต UI ตัวอย่างเช่น หากหน้าจอกิจกรรมแสดง "กิโลเมตรที่วิ่ง" เป็นทศนิยมเพียง 1 ตำแหน่ง คุณก็ไม่ควรส่งการเปลี่ยนแปลงสถานะไปยัง Wear OS ทุกครั้งที่ผู้ใช้เคลื่อนที่ไปข้างหน้าอีก 1 เมตร

หากต้องการวิเคราะห์การใช้งาน Data Layer API ในแอป ให้เรียกใช้คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัลในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์

adb shell dumpsys activity service WearableService

ผลลัพธ์ของคำสั่งนี้จะรวมถึงข้อมูลต่อไปนี้

  • RpcService: ช่วยให้คุณดูได้ว่ามีการเรียกเส้นทางใดและบ่อยเพียงใดโดยใช้ MessageClient
  • DataService: ช่วยให้คุณดูได้ว่ามีการตั้งค่ารายการข้อมูลบ่อยเพียงใดโดยใช้ DataClient

แอปสุขภาพและการออกกำลังกาย

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

ไพ่และข้อมูลแทรก

หากแอปของคุณรองรับไทล์หรือข้อมูลแทรก ให้ทำตามแนวทางปฏิบัติแนะนำ ต่อไปนี้

  • ปิดใช้การรีเฟรชอัตโนมัติ หรือเพิ่มอัตราการรีเฟรชเป็น 2 ชั่วโมงขึ้นไป
  • ใช้ Firebase Cloud Messaging (FCM) หรือ กำหนดเวลาให้งานทำงานอย่างเหมาะสม เพื่อส่งการอัปเดตข้อมูล ระมัดระวังไม่ให้อัปเดตเร็วเกินไป ซึ่งอาจทำให้ระบบกำหนดเวลาให้งานทำซ้ำๆ ด้วยอัตราที่เร็วกว่าที่ผู้ใช้หรือแพลตฟอร์มจะเข้าถึงข้อมูลที่จำเป็นในการทำงานนั้นได้
  • อย่ากำหนดเวลาให้ไพ่หรือข้อมูลแทรกทำงานเมื่อผู้ใช้ไม่ได้โต้ตอบกับไพ่หรือข้อมูลแทรก
  • ใช้แนวทางแบบออฟไลน์ก่อน
  • แชร์ฐานข้อมูลเดียวระหว่างแอปหลัก ไพ่ และข้อมูลแทรก ซึ่งจะช่วยให้ข้อมูลมีความสอดคล้องกันในส่วนต่างๆ ของ UI ด้วย