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

การใช้ตำแหน่งในเบื้องหลังอาจส่งผลต่ออายุการใช้งานแบตเตอรี่ได้อย่างมาก 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_NO_POWER รับตำแหน่งจากแอปอื่นๆ โดยอัตโนมัติสำหรับตำแหน่งที่คำนวณไว้แล้ว

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

ความถี่

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

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

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

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

ตอบสนองช้า

คุณสามารถระบุเวลาในการตอบสนองได้โดยใช้เมธอด setMaxWaitTime() โดยปกติแล้วคือการส่งค่าที่มากกว่าช่วงเวลาที่ระบุไว้ในเมธอด setInterval() หลายเท่า การตั้งค่านี้จะเลื่อนเวลาการนำส่งตำแหน่งออกไป และอาจส่งการอัปเดตตำแหน่งหลายรายการเป็นกลุ่ม การเปลี่ยนแปลงทั้ง 2 อย่างนี้จะช่วยลดความสิ้นเปลืองแบตเตอรี่

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

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

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

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

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