ประสิทธิภาพด้านพลังงานมีความสำคัญอย่างยิ่งใน 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:
- ตรวจสอบการติดตามของระบบเมื่อหน้าจอจะปิดและอุปกรณ์เข้าสู่โหมดแอมเบียนท์
- มองหางานที่ยังคงดำเนินการอยู่และระดับการใช้งาน 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
ผลลัพธ์ของคำสั่งนี้จะแสดงข้อมูลต่อไปนี้
- การลงทะเบียนเซ็นเซอร์ปัจจุบันและก่อนหน้า
- การกำหนดค่าเซ็นเซอร์ รวมถึงการจัดกลุ่มหากมีการตั้งค่า
- ข้อมูลจากการสุ่มตัวอย่างล่าสุด
ทดสอบการยกเลิกการลงทะเบียนจากเซ็นเซอร์
หากต้องการตรวจสอบว่าแอปหยุดดึงข้อมูลเซ็นเซอร์ตามที่คาดไว้หรือไม่ ให้ทดสอบสถานการณ์ต่อไปนี้
- ปัดเพื่อปิดแอป
- แตะหน้าจอด้วยฝ่ามือ การดำเนินการนี้จะปิดหน้าจอหรือทำให้หน้าจอเข้าสู่โหมดแอมเบียนท์
ใช้คำสั่ง 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
แอปสุขภาพและการออกกำลังกาย
หากคุณดูแลแอปสุขภาพและการออกกำลังกาย ให้ใช้ บริการข้อมูลสุขภาพ เพื่อเพิ่มประสิทธิภาพการใช้เซ็นเซอร์ของแอป
- สำหรับ
ExerciseClientให้ใช้ การติดตามของระบบ Perfetto หรือadb shell dumpsys batterystatsเพื่อยืนยันการทำงานที่ถูกต้องในโหมดแอมเบียนท์ ตรวจสอบว่าแอปไม่ทำงานบ่อยกว่าทุกๆ 1-2 นาทีเพื่อรับข้อมูลExerciseUpdate - สำหรับการตรวจสอบสุขภาพทั่วไปตลอดทั้งวัน ให้ใช้
PassiveMonitoringClientตามที่ อธิบายไว้ในคู่มือเกี่ยวกับวิธี ตรวจสอบข้อมูลสุขภาพและการออกกำลังกายใน เบื้องหลัง
ไพ่และข้อมูลแทรก
หากแอปของคุณรองรับไทล์หรือข้อมูลแทรก ให้ทำตามแนวทางปฏิบัติแนะนำ ต่อไปนี้
- ปิดใช้การรีเฟรชอัตโนมัติ หรือเพิ่มอัตราการรีเฟรชเป็น 2 ชั่วโมงขึ้นไป
- ใช้ Firebase Cloud Messaging (FCM) หรือ กำหนดเวลาให้งานทำงานอย่างเหมาะสม เพื่อส่งการอัปเดตข้อมูล ระมัดระวังไม่ให้อัปเดตเร็วเกินไป ซึ่งอาจทำให้ระบบกำหนดเวลาให้งานทำซ้ำๆ ด้วยอัตราที่เร็วกว่าที่ผู้ใช้หรือแพลตฟอร์มจะเข้าถึงข้อมูลที่จำเป็นในการทำงานนั้นได้
- อย่ากำหนดเวลาให้ไพ่หรือข้อมูลแทรกทำงานเมื่อผู้ใช้ไม่ได้โต้ตอบกับไพ่หรือข้อมูลแทรก
- ใช้แนวทางแบบออฟไลน์ก่อน
- แชร์ฐานข้อมูลเดียวระหว่างแอปหลัก ไพ่ และข้อมูลแทรก ซึ่งจะช่วยให้ข้อมูลมีความสอดคล้องกันในส่วนต่างๆ ของ UI ด้วย
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- เข้าถึงตำแหน่งในเบื้องหลัง
- กำหนดเวลาการปลุก
- สร้างวิดเจ็ตขั้นสูง {:#advanced-widget}