我正在编写一个Android应用程序,每5分钟获取一次用户位置,将其存储在数据库中并将其发送到服务器。
我已经阅读了许多方法,我打算做以下事情:
但我已经看到它可以通过“远程服务”完成(http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html )或使用AlarmManager安排每5分钟启动一次此服务。
该服务需要始终运行:重要的是,在每个间隔(5分钟)之后,它将被执行。
我想我在这里需要一些清晰度。
感谢您的帮助,
答案 0 :(得分:5)
我正在编写一个Android应用程序,每5分钟获取一次用户位置,将其存储在数据库中并将其发送到服务器。
请允许用户选择位置提供商。不是每个人都在他们的设备上有GPS。并非所有人都启用了GPS。而且,并非所有人都希望每隔五分钟就能打开GPS的电源。
请允许用户选择轮询周期,包括“从不轮询 - 我将从活动中手动刷新信息”。另外,请尊重background data setting(ICS已弃用)。
我想我在这里需要一些清晰度。
如果即使活动不在前台也应继续进行轮询,请使用AlarmManager
。但是,大多数使用AlarmManager
的方法都会由IntentService
处理实际工作(在您的情况下,GPS修复和网络I / O)。这不适用于您的情况,因为GPS是异步的 - 您不能随时获得修复。获得修复需要很长时间,可能永远,所以你必须处理延迟并最终超时操作。写Service
来执行此操作是possible,但是很棘手,特别是如果您的目标是收集此信息,即使设备处于睡眠状态。
但是,如果轮询仅在活动位于前台并且设备处于打开状态时才会继续进行,那么我根本不会打扰Service
。只需让活动使用postDelayed()
来设置每运行五分钟的代码,然后让它完成工作。