เกี่ยวกับตำแหน่งในเบื้องหลังและอายุการใช้งานแบตเตอรี่

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

เมื่อใช้ขีดจำกัดตำแหน่งในเบื้องหลัง

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

ความรู้ที่จำเป็น

เอกสารนี้ถือว่าคุณคุ้นเคยกับ API ต่อไปนี้

ทำความเข้าใจปัญหาแบตเตอรี่หมดเร็ว

การรวบรวมตำแหน่งและการใช้แบตเตอรี่มีความเกี่ยวข้องกันดังนี้

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

ความแม่นยำ

คุณระบุความแม่นยำของตำแหน่งได้โดยใช้เมธอด setPriority() โดยส่งค่าใดค่าหนึ่งต่อไปนี้เป็นอาร์กิวเมนต์

  • PRIORITY_HIGH_ACCURACY จะให้ตำแหน่งที่แม่นยำที่สุดเท่าที่จะเป็นไปได้ ซึ่งคำนวณโดยใช้อินพุตมากเท่าที่จำเป็น (เปิดใช้ GPS, Wi-Fi และเครือข่ายมือถือ รวมถึงใช้เซ็นเซอร์ต่างๆ) และอาจทำให้แบตเตอรี่หมดเร็วขึ้นอย่างมาก
  • PRIORITY_BALANCED_POWER_ACCURACY จะระบุตำแหน่งที่ถูกต้องพร้อมทั้งเพิ่มประสิทธิภาพการใช้พลังงาน ใช้ GPS น้อยมาก โดยปกติแล้วจะใช้ข้อมูล Wi-Fi และเครือข่ายมือถือร่วมกันเพื่อคำนวณตำแหน่งของอุปกรณ์
  • PRIORITY_LOW_POWER อาศัยเสาสัญญาณมือถือเป็นหลักและหลีกเลี่ยงการใช้ GPS และ Wi-Fi โดยให้ความแม่นยำแบบคร่าวๆ (ระดับเมือง) และใช้แบตเตอรี่น้อยที่สุด
  • PRIORITY_PASSIVE จะรับตำแหน่งแบบพาสซีฟจากแอปอื่นๆ ที่มีการคำนวณตำแหน่งแล้ว

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

ความถี่

คุณระบุความถี่ของสถานที่ตั้งได้ 2 วิธีดังนี้

  • ใช้เมธอด setIntervalMillis() เพื่อระบุช่วงเวลาในการคำนวณตำแหน่งของแอป
  • ใช้เมธอด setMinUpdateIntervalMillis() เพื่อระบุช่วงเวลาในการรับตำแหน่งของแอปอื่นๆ

ส่งค่าที่มากที่สุดเท่าที่จะเป็นไปได้เมื่อใช้ setIntervalMillis() โดยเฉพาะอย่างยิ่งสำหรับการรวบรวมตำแหน่งในเบื้องหลัง ซึ่งมักจะทำให้แบตเตอรี่หมดเร็ว สำรองช่วงเวลา 2-3 วินาทีสำหรับกรณีการใช้งานที่ทำงานอยู่เบื้องหน้า

ขีดจำกัดตำแหน่งในเบื้องหลังที่เปิดตัวใน Android 8.0 (ระดับ API 26) บังคับใช้กลยุทธ์เหล่านี้ แต่แอปของคุณควรพยายามบังคับใช้กลยุทธ์เหล่านี้ในอุปกรณ์ที่ใช้ Android 7.0 (ระดับ API 24) และต่ำกว่า

เวลาในการตอบสนอง

คุณสามารถระบุเวลาในการตอบสนองโดยใช้เมธอด setMaxUpdateDelayMillis() ซึ่งโดยปกติแล้วจะส่งค่าที่มากกว่าช่วงเวลาที่ระบุในเมธอด setIntervalMillis() หลายเท่า การตั้งค่านี้จะทำให้การส่งข้อมูลตำแหน่งล่าช้า และอาจมีการส่งการอัปเดตตำแหน่งหลายรายการเป็นกลุ่มๆ การเปลี่ยนแปลง 2 อย่างนี้จะช่วยลดการใช้แบตเตอรี่

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

เมื่อใช้เขตพื้นที่เสมือน แอปควรส่งค่าขนาดใหญ่ไปยังเมธอด setNotificationResponsiveness() เพื่อประหยัดพลังงาน เราขอแนะนำให้ใช้ค่า 5 นาทีขึ้นไป

อ่านเพิ่มเติม

ดูข้อมูลเพิ่มเติมได้ที่เอกสารต่อไปนี้

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