Android后台服务和AlarmManager

Ull*_*oll 2 service android alarmmanager

我正在编写一个Android应用程序,每5分钟获取一次用户位置,将其存储在数据库中并将其发送到服务器.

我已经阅读了许多方法,我将做以下事情:

  1. 用户启动应用程序
  2. 主UI活动启动服务.
  3. 该服务在后台运行并持续打开和关闭gps,并创建将保存到数据库的新线程,并将数据发送到服务器.

但我已经看到它可以通过"远程服务"(http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html)或与一个AlarmManager,用于安排每5分钟启动一次该服务.

该服务需要始终运行:重要的是,在每个间隔(5分钟)之后,它将被执行.

我想我需要一些清晰度.

谢谢您的帮助,

Com*_*are 5

我正在编写一个Android应用程序,每5分钟获取一次用户位置,将其存储在数据库中并将其发送到服务器.

请允许用户选择位置提供商.不是每个人都在他们的设备上有GPS.并非所有人都启用了GPS.而且,并非所有人都希望每五分钟打开GPS的电源.

请允许用户选择轮询周期,包括"从不轮询 - 我将从活动中手动刷新信息".另外,请遵守背景数据设置(自ICS起不推荐使用).

我想我需要一些清晰度.

如果即使活动不在前台也应继续进行轮询,请使用AlarmManager.但是,大多数使用的配方AlarmManager都将由实际工作(在您的情况下,GPS修复和网络I/O)处理IntentService.这不适用于您的情况,因为GPS是异步的 - 您不能随时获得修复.获得修复需要很长时间,可能永远,所以你必须处理延迟并最终超时操作.写一个Service这样做是可能的,但是很棘手,特别是如果你的目标是收集这些信息,即使设备睡着了.

但是,如果轮询仅在活动处于前台并且设备处于打开状态时才会继续进行,那么我根本不会打扰Service.只需将活动用于postDelayed()设置每运行五分钟的预定代码,然后让它完成工作.