背景位置資訊用量可能會大幅影響電池續航力。Android 支援限制背景位置資訊收集功能,提醒開發人員最佳化應用程式,以提升電池效率。無論裝置執行的 Android 版本為何,這些最佳化功能都對所有裝置有益。
- 背景位置資訊收集會受到限制並計算位置,且每小時只傳送幾次。
- Wi-Fi 掃描更加保守,當裝置保持連線至相同的靜態存取點時,系統就不會計算位置資訊更新。
- 地理圍欄回應速度從數 10 秒變更為約 2 分鐘。這項變更可提升電池效能,部分裝置的效能可提升高達 10 倍。
必要知識
本文件假設您熟悉下列 API:
- Google 定位服務。相較於架構位置 API,這些 API 的準確度更高,電池負擔也更小。
- 整合式位置預測提供工具:這個 API 結合 GPS、Wi-Fi 和行動網路以及加速計、陀螺儀、磁力儀和其他感應器的信號。
- 地理圍欄:這個 API 是以整合式位置預測提供工具 API 為基礎而建構,並經過最佳化處理,可提升電池效能。
瞭解電池耗電
位置資訊收集和電池耗電之間的關係如下:
- 準確度:位置資料的精確度。一般而言,準確率越高,電池耗電就越大。
- 頻率:位置資訊的計算頻率。系統計算位置資訊頻率越高,電池用量越大。
- 延遲時間:位置資料的傳送速度。延遲時間越短,通常需要的電池電量越多。
精確度
您可以使用 setPriority() 方法指定位置精確度,並將下列其中一個值做為引數傳遞:
PRIORITY_HIGH_ACCURACY提供最準確的位置資訊,根據需要盡量使用多項輸入內容進行計算 (啟用 GPS、Wi-Fi 和行動網路,並使用各式各樣的感應器),可能導致耗用大量電力。PRIORITY_BALANCED_POWER_ACCURACY提供準確的位置資訊,同時提高電源效率。極少使用 GPS。通常會結合使用 Wi-Fi 和手機資訊來計算裝置位置。PRIORITY_LOW_POWER主要仰賴行動通信基地台,並避免使用 GPS 和 Wi-Fi 輸入內容,以最低耗電量提供粗略的 (城市層級) 準確率。PRIORITY_NO_POWER會從其他應用程式被動接收已計算出的位置資訊。
使用平衡電源或低電源選項,即可滿足大多數應用程式的位置資訊需求。高精確度選項應保留給在前景執行且需要「即時」位置資訊更新 (例如地圖應用程式) 的應用程式。
頻率
您可以使用下列兩種方式指定位置資訊更新頻率:
- 使用
setIntervalMillis()方法指定計算應用程式位置的間隔時間。 - 使用
setMinUpdateIntervalMillis()方法指定接收其他應用程式位置資訊的間隔時間。
使用 setIntervalMillis() 時,請盡可能傳遞最大值。尤其是針對收集背景位置資訊時,因為收集背景位置資訊往往會導致多餘的電池耗電。建議保留幾秒鐘的間隔時間用於前景用途。
Android 8.0 (API 級別 26) 版導入的背景位置資訊限制會強制執行這些策略,但您的應用程式也應盡力在搭載 Android 7.0 (API 級別 24) 以下版本的裝置上強制執行這些策略。
回覆太慢
您可以使用 setMaxUpdateDelayMillis() 方法指定延遲時間,通常,傳遞值大於 setIntervalMillis() 方法中指定的間隔時間。這項設定會延遲位置資訊傳送,並且可能分批傳送多個位置更新通知。這兩項變更都能使電池耗電量降至最低。
如果應用程式不需要立即的位置資訊更新,請將最大的可能值傳遞至 setMaxUpdateDelayMillis() 方法,藉此有效拉長延遲時間,以掌握更多資料及提高電池效率。
使用地理圍欄時,應用程式應將較大值傳遞至 setNotificationResponsiveness() 方法以保留電力。建議值為 5 分鐘以上。
其他資訊
如需詳細資訊,請參閱下列文件: