基于位置的服务永远在后台运行

时间:2013-02-16 05:14:33

标签: android gps

我的应用程序:我正在开发基于位置的服务,它用于跟踪销售人员。情景是人xyz想要跟踪他的销售人员,他将设置获取位置更新的时间和距离间隔,之后他将手机移交给销售人员,App应该持续运行并跟踪GPS。

问题:我已经差不多完成了项目,但我想运行这个应用程序FOREVER跟踪,我正在通过GPS进行此操作,当我在设置时间和距离后最小化应用程序我的应用程序将关闭通过Android操作系统,但它什么时候会在FOREGROUND它完美的工作。

请告诉我这是什么可能的解决方案。

3 个答案:

答案 0 :(得分:1)

首先,您希望在Service中进行跟踪而不是在活动本身中进行跟踪,以便应用即使用户未与其进行交互也会执行此操作。

然后AlarmManager就是您要找的。您可以安排在特定时间调用Intent。因此,您可以检查您的服务是否仍在运行,如果没有重新启动,则再次开始跟踪。

从此应用查看UpdateService

 Intent i = new Intent(UPDATE_ACTION);
 PendingIntent alarmManagerPendingIntent = PendingIntent.getBroadcast(this, 0, i, 0);

 mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime(), //Start now
                10*60*1000, //every 10 minutes
                alarmManagerPendingIntent);

答案 1 :(得分:0)

除常规应用外,您还需要使用服务。即使应用程序关闭,服务也可以运行。您无法永久地运行服务"此外,您可以随时手动停止服务。为了使服务能够存活更长时间,它必须是前台服务 - 更多信息:Running a Service in the Foreground

答案 2 :(得分:0)

最简单的方法是

@Override
public void onDestroy() {
    Intent serviceIntent = new Intent(getApplicationContext(), UpdateLocationService.class);
    getApplicationContext().startService(serviceIntent);
}