轮询对位置更新的电池影响较少?

时间:2017-02-26 18:09:16

标签: android geolocation android-location fusedlocationproviderapi power-saving

我已经阅读了很多相互矛盾的信息。

假设我在PRIORITY_HIGH_ACCURACY模式下使用Fused Location API,如果我将间隔设置为10分钟对1分钟,会有很大的不同吗? 1小时vs 10秒?如果是这样,有多大的意义?

我不知道它是如何在内部工作所以我只是想知道如果我需要高精度位置我可以做些什么来节省电池(并且相对不频繁的轮询不是问题)。

https://developer.android.com/training/monitoring-device-state/index.html

开发者网站提供了有关如何节省电池的建议,但他们似乎没有提供有关轮询频率确切影响电池寿命的具体信息。

启用服务是否始终保持GPS开启,因此始终使用电池(因此间隔是合成的,仅出于编程原因)?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于Fused Location API,我不确定他们是否关闭GPS或调整报告间隔,同时保持开启,但我认为他们会在更新之间关闭GPS,否则许多其他人会抱怨耗电。

对于Android定位服务的功能,如果间隔大于0,它们会关闭GPS并允许手机在更新之间空闲(请查看LocationManagerService中的来源)。我已经在不同的Android手机上进行了相当多的功率测试,发现让CPU保持空闲状态可以获得相当大的功率。增加GPS的功率消耗(这可以防止CPU空转),你正在寻找一个不错的功耗(约为屏幕为某些设备绘制的功率的50%)。

最后,我必须同意Gabe Sechan并建议您选择精确度是否值得耗尽电量。只要问问自己这些基本问题:

  • 我是否需要知道我的用户是在街道的一边还是另一边?

    如果是,请使用GPS,否则请使用网络或低精度位置。

  • 我需要多久检查一次用户的位置?

    如果您需要大约每分钟一次,请设置您的间隔。如果您只关心他们离开一般区域,设置地理围栏或使用网络位置。您还可以收听来自其他应用的位置更新,并让您的应用更智能地了解何时进行更新。

  • 如果我无法在X时间内获取用户的位置,是否可以完全跳过此更新?

    如果可以,请在更新逻辑中添加超时功能。如果没有,我强烈建议您在这种情况下重新评估应用程序逻辑。