在Android上定期轮询位置的正确方法?
我正在寻找建立类似谷歌的实地考察应用程序。我希望证明的关键属性是:在Android上定期轮询位置的正确方法?,android,android-intent,android-service,Android,Android Intent,Android Service,我正在寻找建立类似谷歌的实地考察应用程序。我希望证明的关键属性是: 每X分钟运行一次的后台“作业”,检查用户的位置并拨打webservice电话(这个问题实际上与位置部分无关) 即使用户退出主应用程序,作业也应运行 设备重新启动后,后台作业应自动启动 重新启动后,应用程序不应显示在“最近/历史”屏幕上 我的阅读让我了解了许多不同的类/API,从开机时的广播接收器到常规服务,再到报警管理器等。似乎有多种方法可以实现这一点,我很好奇社区推荐的高级方法是什么?您肯定希望使用广播管理器来获取启动事件
- 每X分钟运行一次的后台“作业”,检查用户的位置并拨打webservice电话(这个问题实际上与位置部分无关)
- 即使用户退出主应用程序,作业也应运行
- 设备重新启动后,后台作业应自动启动
- 重新启动后,应用程序不应显示在“最近/历史”屏幕上
我的阅读让我了解了许多不同的类/API,从开机时的广播接收器到常规服务,再到报警管理器等。似乎有多种方法可以实现这一点,我很好奇社区推荐的高级方法是什么?您肯定希望使用广播管理器来获取启动事件 就位置轮询而言,听起来您希望在收到启动事件后使用服务并启动它。 然后,您可以使用类似事件总线的方式将事件传递到您需要的任何地方
就时间而言,您可以使用作业管理器以不同的时间间隔运行任务,或者只是简单地创建一个runnable并让它随时运行。只要您将它保留在服务中,您就应该能够控制它正常运行的长度。无论应用程序是否关闭 我认为您可以将解决方案分为两部分:
- 通过定义具有以下操作的广播接收器,在设备重新引导过程完成后启动应用程序或服务: 并在广播“DoyourTask”的“onReceive”方法上启动服务,以侦听位置服务更新
- 对于收听每x分钟更新一次的位置的部分,您最好使用alarm manager每x分钟“唤醒”一次服务,并且每个服务为下一次呼叫设置闹钟