2017-01-05 47 views
3

我有一個應用程序,每10秒更新一次Web服務的位置。但是,在API等級爲23或更高的設備上,當打盹模式在15分鐘後進入非活動狀態時,網絡連接丟失,應用程序無法將更多位置更新發送到我的Web服務。避免打盹模式沒有白名單的應用程序

除了通過要求用戶允許忽略電池優化(僅允許每15分鐘更新一次位置)將應用列入白名單,我還有哪些其他選項可以繼續獲取GPS位置更新並能夠將它們發送到我的網站服務?

回答

0

你開始的時候經常跑步。沒有電話甚至更新快速正常的位置,每30到60秒鐘一次。所以2/3到5/6的更新是毫無意義的。忽略這一點 - 如果你在一輛60英里/小時的汽車中行駛10秒內就不會超過14英尺。在服務器上完全沒有任何事情需要精確到14英尺 - 手機中的典型GPS僅精確到10米(超過30英尺)。這就是GPS不更頻繁更新的原因之一。

但是,沒有。他們實施打瞌睡是有原因的。它可以節省電池。他們設置了它,因此如果不想詢問用戶是否要刻錄該電池,就無法繞過它。我完全理解爲什麼15分鐘太慢,但是你問用戶,讓他們決定你的應用是否值得。

+0

我認爲SO的關鍵在於不管是10秒還是1分鐘,他們如何在睡眠模式下發出網絡請求?例如,如果他們正在開發一個駕駛導航應用程序。它是通過發送GCM高優先級消息嗎? – AshesToAshes

+0

@AshesToAshes他們要求列入白名單。他試圖沒有這樣做。 (Google地圖由OEM列入白名單)。關於它過於頻繁的部分是我指出它,所以他停止浪費網絡帶寬和電池電力做無意義的事情。 –

+0

非常真實,但是解決這個問題的方法是將應用程序列入白名單,這是必須的+ GCM消息呢? – AshesToAshes

1

儘管克服打盹模式是非常不道德的,但如果應用程序能夠向用戶解釋電池問題,那麼最好將應用列入白名單。

另一種選擇是保持屏幕打開以避免打盹模式被觸發。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

這段代碼將保持屏幕開啓。確保創建一個黑色或空白的佈局,比如小精靈去的電池保護程序。

Official Doze文檔允許將您的用例列入白名單。檢查它here

+0

我們能否獲得該參考鏈接? – AshesToAshes

+1

https://developer.android.com/training/monitoring-device-state/doze-standby.html –