1

我正在尝试优化必须实现以下目标的 Android 应用程序:

  • 每小时检索一次 GPS 位置和 doSomeWork()

  • 在任何其他时间,如果设备移动超过@MINIMUM_DISTANCE,将更新频率增加到大约 5 分钟以记录移动,当移动结束时,我们可以返回每小时更新。

现在,AlarmManager 每小时触发一次可以满足第一个要求。这是完成这项任务的一种很好的电池效率方法。但是我不确定如何最好地完成第二个要求。

我是不是该:

  • 注册一个每隔 5 分钟触发一次的 AlarmManager 与每小时计时器?每次注册LocationManager并尝试拉出一个位置,与之前的位置比较以确定是否发生移动。

  • 在我每小时醒来后注册一个 LocationManager,最小距离参数等于我所需的最小移动。

  • 还有什么?

我可以看到每种方法的优缺点。

在我看来,使用 LocationManager 最小距离参数是更简洁的解决方案,但我担心电池消耗,无论我的应用程序是否正在接收更新,这是否会使 GPS 一直处于高温状态?我也不确定注册接收器的最佳位置在哪里,我知道保持服务 100% 的时间运行是一种糟糕的做法(更不用说几乎不可能了)。

是的,我是 Android 新手!即将去测试LocationManager的行为。

提前致谢。

4

2 回答 2

1

我的解决方案运行良好,是保持 NETWORK_PROVIDER(如果我可以免费获得一些更新的机会是被动的)注册并在 GPS_PROVIDER 不存在的任何时候收听。如果在先前检索到的位置之外看到运动,我可以切换到全 GPS 来监控运动。

准确性很差,但至少足够好。电池消耗非常低。

于 2012-07-31T09:54:48.220 回答
0

如果用户上车开车会发生什么?如果您LocationManager设置了最小距离,您会相对较快地收到回调(好吧,我不知道您的最小距离是多少,但是......)。在另一种情况下,您可能需要等待整整 5 分钟,直到您发现用户已移动。

但是,如果您真的只需要每 5 分钟更新一次,那么我肯定会使用该AlarmManager方法,因为这将保证您不会在 5 分钟时段之间使用 GPS 进行任何操作。

但请注意,如果用户移动且 GPS 未打开,则 GPS 可能需要一些时间才能得到修复。所以不要指望你能在启动 GPS 时立即得到准确的定位。

于 2012-07-13T15:55:17.590 回答