android - 最省电的位置跟踪实现? Intent/BroadcastReceiver/LocationListener/服务/IntentService/AlarmManager?

标签 android android-intent alarmmanager intentservice locationlistener

我研究了各种解决方案,发现有很多方法可以实现位置跟踪逻辑。

  1. Intent+BroadcastReceiver+LocationListener
  2. Intent+IntentService+AlarmManager
  3. 位置监听器
  4. 其他技术或上述技术的不同组合...

我正在尝试找出实现相同目标的最佳实践(最省电的方式)...

我有一个库类 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/

相关文章:

android - 在后台服务中覆盖音量按钮

java - 创建底部导航 View Android Studio 后

android - 布局中的 fragment 占位符

android - 当某些闹钟在 Android 中自然重复时设置多个闹钟的最佳方法

android - 线程和处理程序有什么区别

android - Cordova 3.4.0 navigator.camera.getPicture 不回调 Android 4.3 的 onSuccess 或 onFail

java - 在不使用默认/内置应用程序的情况下使用 JavaMail API 在 Android 中发送电子邮件

java - 使用 Intent 过滤器从 XML 获取数据的问题

android - AlarmManager 没有按时触发

Android Notification & Alarmmanager - 时间不同