在Android上定期轮询位置的正确方法?

时间:2015-02-27 22:02:35

标签: android android-intent android-service

我正在寻找类似于Google的实地考察应用程序的东西。我希望证明的关键属性是:

  • 背景"工作"每隔X分钟运行一次并检查用户的位置并进行网络服务电话(这个问题与位置部分无关)
  • 即使用户退出主应用程序,作业也应该运行。
  • 后台作业应在设备重新启动后自动启动。
  • 重新启动后,应用程序不应显示在"最近/历史记录"屏

我的阅读带来了许多不同的课程/ API,从开机,常规服务,报警经理等广播接收器开始。似乎有多种方法可以使用,我和#39;我很好奇社区建议采用什么样的高级方法?

2 个答案:

答案 0 :(得分:1)

您肯定希望使用广播管理器来获取启动事件。

就位置轮询而言,听起来您希望使用服务并在收到引导事件后启动它。 Services

然后,您可以使用Otto等事件总线将您的活动传达到您需要的任何地方。

就时间安排而言,您可以使用作业管理器以不同的时间间隔运行,或者只是简单地创建一个runnable并让它按照您的喜好运行。只要你将它保留在服务中,你应该能够控制它运行得很好的长度。无论应用程序是否关闭。

答案 1 :(得分:1)

我认为您可以将解决方案分为两部分:

  • 通过定义具有以下操作的广播接收器,在设备重新启动过程完成后启动应用程序或服务:

                                                        并且在" onReceive"广播的方法"做你的任务"启动侦听位置服务更新的服务。

  • 对于每隔x分钟更新一次收听位置的部分,您最好使用闹钟管理器来唤醒"唤醒"每隔x分钟服务一次,每个服务都为下次通话设置闹钟。