【发布时间】:2016-08-11 01:22:08
【问题描述】:
我的要求是使用后台服务每 10 分钟检查一次设备的位置。所以每 10 分钟应该发生的事情的基本要点是 -
- 启动服务。
- 等待一分钟(最多)让侦听器获取位置,一旦获取位置,移除侦听器然后停止服务。
- 如果监听器没有响应,使用getLastKnownLocation(),移除监听器然后停止服务。
- 如果 GPS 关闭,它会向应用报告(此步骤运行正常)
到目前为止我尝试过的事情 -
- 使用 AlarmManager 每 10 分钟触发一次服务
- 在此服务中添加了位置侦听器。
- 来自 LocationListener 的 onLocationChanged() 包含方法 - stopSelf(),以便服务在收到位置后结束。但是,这种方法被调用了无数次。我在调试时检查了这一点。这是因为调用了许多 onLocationChanged() 实例吗?
我不需要完整的代码作为答案,我更希望我应该采用一种既能满足我的要求又不会对电池造成太大伤害的策略。与我的方法一样,除非并且直到找到该位置,否则 GPS 会保持打开状态,不断消耗电池电量。
【问题讨论】: