我的应用程序:我正在开发基于位置的服务,用于跟踪销售人员。场景是XYZ想要跟踪他的销售人员的人,他将设置获得位置更新的时间和距离间隔,此后他将把手机移交给销售人员,应用程序应该不断运行和跟踪GPS。
问题:我几乎完成了这个项目,但我想永远运行这个应用程序来跟踪,我通过 GPS 执行此操作,当我在设置时间和距离后最小化应用程序时,我的应用程序将通过 android OS 关闭,但当它在 FOREGROUND它完美地工作。
请建议我对此的可能解决方案是什么。
首先,您想在Service中而不是在 Activity 本身中进行跟踪,因此即使用户没有与之交互,应用程序也会执行此操作。
然后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);
除了常规应用程序之外,您还需要使用服务。即使应用程序关闭,服务也可以运行。您不能“永远”运行服务,此外,您始终可以手动停止服务。为了使服务能够存活更长时间,它必须是前台服务 - 更多信息:在前台运行服务。
最简单的方法是
@Override
public void onDestroy() {
Intent serviceIntent = new Intent(getApplicationContext(), UpdateLocationService.class);
getApplicationContext().startService(serviceIntent);
}