我研究了各种解决方案,发现有很多方法可以实现位置跟踪逻辑。
- Intent+BroadcastReceiver+LocationListener
- Intent+IntentService+AlarmManager
- 位置监听器
- 其他技术或上述技术的不同组合...
我正在尝试找出实现相同目标的最佳实践(最省电的方式)...
我有一个库类 MyLocationClass.java,它有两个方法 1. startTracking() - 在 T 时间后且仅当用户移动了 X 距离时才开始发送用户位置 2. stopTracking() - 停止发送位置更新。
一个简单的答案似乎是 LocationListener,因为它内置的时间通过/距离移动功能提供了更好的用户体验,但是......
我不想让 GPS 一直开启?事实上,它应该只在 T 和 X 交叉时打开。使用 Service/IntentService 和/或/与警报管理器 Timer 会是更好的解决方案吗?带有 LocationListeners 的 BroadcastReceivers 能否被证明是更好的解决方案?
请提出建议。
最佳答案
我认为,您可以使用在服务中实现的 Location Listener。在服务启动时开始监听 GPS,并在服务停止时移除 GPS 监听器。当您想收听 GPS 时启动此服务。
另请查看“requestLocationUpdates”方法。该函数的minTime和minDistance字段解释如下:
minTime 通知的最小时间间隔,以毫秒为单位。该字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于该值。
minDistance 通知的最小距离间隔,以米为单位
关于android - 最省电的位置跟踪实现? Intent/BroadcastReceiver/LocationListener/服务/IntentService/AlarmManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10173029/