2017-02-27 66 views
0

我想知道什麼是最有效的電池效率方式發送準確位置更新到服務器/ firebase每隔5秒,即使應用程序已關閉或手機重新啓動。我嘗試使用AlarmManager.setRepeating隨着android.intent.action.BOOT_COMPLETED接收機 -每5秒向Firebase發送位置更新?

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
         SystemClock.elapsedRealtime(), 
         5*1000, // 60000 = 1 minute, 
         pendingIntent); 

但這並不在Android 5.1+由於工作 -

頻繁報警壞電池壽命。從API 22開始,AlarmManager將覆蓋近期和高頻警報 請求,將警報延遲至未來至少5秒,並確保重複間隔至少60秒。

使用張貼延遲的消息或可以運行到Handler不是一個可靠的解決方案,因爲只要應用程序被刷掉,位置更新就會停止。

是否有任何可靠的方法每5秒向服務器發送準確的位置更新?

回答

0

首先(如果您還沒有的話) - 請查看Google的FusedLocationProviderApi,這個網站在電池更新方面具有網絡/電池效率。

另外,你有沒有看過GCM Network manager?這被設計爲允許電池高效的任務(無論是一次性的還是反覆出現的)。它試圖將這些任務與其他網絡請求一起批量分發,以保存設備無線電的多個激活。 (Here's a short explanation