避免打盹模式而不将应用程序列入白名单

时间:2017-01-05 06:37:29

标签: android

我有一个应用程序,每10秒更新一次Web服务的位置。但是,在API级别为23或更高级别的设备上,当打盹模式在15分钟后无法启动时,网络连接会丢失,并且应用程序无法向我的网络服务发送更多位置更新。

除了通过要求用户允许忽略电池优化(仅允许每15分钟更新一次位置)将应用程序列入白名单之外,还有哪些其他选项可以继续获取GPS位置更新并能够将其发送到我的网络服务?

2 个答案:

答案 0 :(得分:3)

虽然克服打盹模式是非常不道德的,但如果应用程序可以向用户解释电池问题,那么最好将应用程序列入白名单。

另一个选择是保持屏幕开启以避免触发打盹模式。

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

这段代码将保持屏幕开启。确保创建一个黑色或空白布局,就像口袋妖怪去的电池保护程序一样。

官方Doze文档允许为您的用例列入白名单。检查here

答案 1 :(得分:0)

你经常开始跑步。没有手机甚至更新位置,快速正常将每30至60秒一次。所以2/3到5/6的更新毫无意义。忽略这一点 - 如果你在一辆60英里/小时的汽车中,你将在10秒钟内改变超过14英尺。您在服务器上所做的一切都不需要精确到14英尺 - 手机中的典型GPS只能精确到10米(超过30英尺)。这是GPS不经常更新的原因之一。

但不,没有。他们实施了Doze是有原因的。它节省了电池。他们进行了设置,因此您可以在不询问用户是否要烧毁电池的情况下绕过它。我完全理解为什么15分钟太慢,但是你问用户并让他们决定你的应用是否值得。