Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 永远在后台运行的基于位置的服务_Android_Gps - Fatal编程技术网

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

Android 永远在后台运行的基于位置的服务,android,gps,Android,Gps,我的应用程序:我正在开发基于位置的服务,用于跟踪销售人员。场景是xyz想要跟踪其销售人员的人,他将设置获取位置更新的时间和距离间隔,然后他将手机移交给销售人员,应用程序应持续运行并跟踪GPS 问题:我几乎完成了这个项目,但我想永远运行这个应用程序来跟踪,我是通过GPS这样做的,当我在设置时间和距离后最小化应用程序时,我的应用程序将由android操作系统关闭,但当它将在前台时,它会完美地工作 请告诉我可能的解决方案 首先,您希望在活动中而不是在活动本身中进行跟踪,这样即使用户没有与应用程序交互,

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

问题:我几乎完成了这个项目,但我想永远运行这个应用程序来跟踪,我是通过GPS这样做的,当我在设置时间和距离后最小化应用程序时,我的应用程序将由android操作系统关闭,但当它将在前台时,它会完美地工作


请告诉我可能的解决方案

首先,您希望在活动中而不是在活动本身中进行跟踪,这样即使用户没有与应用程序交互,应用程序也会进行跟踪

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

使用此应用程序查看

 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);
}

看看我这里的代码。我已经使用了这个服务,但我还没有找到使用AlamManager的确切位置。。我刚刚尝试在onDestroy中打印消息,但当Android操作系统停止应用程序时,此方法无法运行。我看不到您的服务。这只是一项活动。但你希望所有的更新工作都在你的服务中。因此,即使活动已关闭,您也可以运行它。startForeground()未在按钮上运行,请单击我们应该在何处使用它??