我的应用程序:我正在开发基于位置的服务,它用于跟踪销售人员。情景是人xyz想跟踪他的销售人员,他将设置获取位置更新的时间和距离间隔,之后他将手机交给销售人员,App应该连续运行并跟踪GPS。基于位置的服务在后台运行永远
问题:我已经差不多完成了这个项目,但是我想运行这个应用程序FOREVER来跟踪,我是通过GPS来做这件事的,当我在设置时间和距离之后最小化应用程序时,我的应用程序将会关闭。将在FOREGROUND中完美运作。
请给我建议这是什么可能的解决方案。
我的应用程序:我正在开发基于位置的服务,它用于跟踪销售人员。情景是人xyz想跟踪他的销售人员,他将设置获取位置更新的时间和距离间隔,之后他将手机交给销售人员,App应该连续运行并跟踪GPS。基于位置的服务在后台运行永远
问题:我已经差不多完成了这个项目,但是我想运行这个应用程序FOREVER来跟踪,我是通过GPS来做这件事的,当我在设置时间和距离之后最小化应用程序时,我的应用程序将会关闭。将在FOREGROUND中完美运作。
请给我建议这是什么可能的解决方案。
首先,您想要在Service中进行跟踪,而不是在活动本身中,因此即使用户未与其交互,该应用也会执行该操作。
然后AlarmManager是你在找什么。您可以安排在特定时间调用意向。因此,您可以检查您的服务是否仍在运行,如果没有重新启动它以重新开始跟踪。
以从这个应用程序看看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);
您需要使用服务,而不是您的常规应用程序。即使应用程序关闭,服务也可以运行。你不能运行服务“永远”,除此之外你总是可以去手动停止服务。为了服务生存更长时间,它必须是一个前台服务 - 更多在这里:Running a Service in the Foreground。
startForeground()没有运行在按钮上我们shd使用这个确切的地方? – krish 2013-02-16 05:42:23
最简单的方法是
@Override
public void onDestroy() {
Intent serviceIntent = new Intent(getApplicationContext(), UpdateLocationService.class);
getApplicationContext().startService(serviceIntent);
}
http://pastie.org/6192104看看我的代码here..I已经使用服务,但即时通讯没有得到确切位置使用alarammanager ..我只是试图打印在onDestroy中发送消息,但在Android操作系统正在查杀时此方法未运行应用程序 – krish 2013-02-16 05:37:43
我没有看到您的服务。这只是活动。但是你希望你所有的更新工作都在你的服务中。所以即使活动已关闭,您也可以运行它。 – n3utrino 2013-02-16 05:43:02