การใช้ตำแหน่งในเบื้องหลังอาจส่งผลต่อระยะเวลาการใช้งานแบตเตอรี่อย่างมาก Android รองรับการจำกัดการรวบรวมตำแหน่งในเบื้องหลัง ซึ่งกระตุ้นให้นักพัฒนาแอปเพิ่มประสิทธิภาพแอปพลิเคชันเพื่อประสิทธิภาพแบตเตอรี่ที่ดีขึ้น การเพิ่มประสิทธิภาพเหล่านี้เป็นประโยชน์สำหรับอุปกรณ์ทั้งหมด ไม่ว่าอุปกรณ์จะใช้ Android เวอร์ชันใดก็ตาม
เมื่อใช้ขีดจำกัดตำแหน่งในเบื้องหลัง
- การรวบรวมตำแหน่งในเบื้องหลังจะถูกจำกัด และระบบจะคำนวณและส่งตำแหน่งเพียงไม่กี่ครั้งต่อชั่วโมง
- การสแกน Wi-Fi จะประหยัดพลังงานมากกว่า และจะไม่มีการคำนวณการอัปเดตตำแหน่งเมื่ออุปกรณ์ยังคงเชื่อมต่อกับจุดเข้าใช้งานแบบคงที่จุดเดิม
- การตอบสนองของการกำหนดเขตพื้นที่เสมือนจะเปลี่ยนจากหลายสิบวินาทีเป็นประมาณ 2 นาที การเปลี่ยนแปลงนี้ช่วยปรับปรุงประสิทธิภาพแบตเตอรี่ได้สูงสุดถึง 10 เท่าในอุปกรณ์บางรุ่น
ความรู้ที่จำเป็น
เอกสารนี้ถือว่าคุณคุ้นเคยกับ API ต่อไปนี้
- บริการตำแหน่งของ Google API เหล่านี้มีความแม่นยำสูงกว่าและใช้แบตเตอรี่น้อยกว่า API ตำแหน่งของเฟรมเวิร์ก
- ผู้ให้บริการ Fused Location API นี้รวมสัญญาณจาก GPS, Wi-Fi และเครือข่ายมือถือ ตลอดจนตัวตรวจวัดความเร่ง เครื่องวัดการหมุน เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก และเซ็นเซอร์อื่นๆ
- การกำหนดเขตพื้นที่เสมือน API นี้สร้างขึ้นบน Fused Location Provider 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 นาทีขึ้นไป
อ่านเพิ่มเติม
ดูข้อมูลเพิ่มเติมได้ที่เอกสารต่อไปนี้
- คำแนะนำ: คู่มือนี้จะอธิบายการดำเนินการที่แนะนำอย่างเป็นรูปธรรมซึ่งคุณสามารถใช้เพื่อปรับปรุงผลกระทบของแอปต่อระยะเวลาการใช้งานแบตเตอรี่
- กรณีการใช้งาน: คู่มือนี้แสดงกรณีการใช้งานทั่วไปหลายกรณีที่คุณอาจใช้บริการตำแหน่งและวิธีเพิ่มประสิทธิภาพผลกระทบต่อระยะเวลาการใช้งานแบตเตอรี่สำหรับกรณีเหล่านั้น