Java Android Start\u redeliver\u重新启动服务需要很长时间(小时)
我目前正在制作一个应用程序,用于轮询gps数据并将其上传到服务器。该服务在应用程序位于前台时启动,并在应用程序进入后台时保持运行。当应用程序被刷卡关闭时,将调用onTaskRemoved,报警管理器将重新启动该服务。该服务是一个IntentService,具有一个异步任务来发布gps坐标 这就是奇怪发生的地方。应用程序在前台停留的时间越长,Android使用START\u REDELIVER\u INTENT作为onstart中的返回命令重启它所需的时间就越长。这项服务很少被安卓系统终止,但一旦终止,它可能需要很长时间才能重新启动,这取决于它在前台的时间。(?)我想 出于测试目的,我删除了重新启动应用程序的报警管理器,因此当我关闭应用程序时,android将使用START\u REDELIVER\u意图重新启动它。如果我打开应用程序30秒,意味着后台服务运行30秒,然后滑动应用程序关闭,Android将在不到一分钟内重新启动 但如果我启动应用程序,在后台启动服务,然后让应用程序在前台运行10分钟,那么当我滑动应用程序关闭时,Android可能需要一个多小时才能重新启动服务。在这10分钟内,应用程序每30秒轮询一次gps,并使用异步任务每5分钟上载一次coords。我不知道发生了什么事。我甚至不能完全确定它是否与应用程序在前台有关,但我可以通过计时应用程序在前台的时间来反复复制它,这似乎与安卓重启服务所需的时间成正比 伙计,我知道这听起来很疯狂,但我希望不是 另外,我在应用程序本身中使用了Cordova/javascript,但服务都是Java。这是我的onCreate和onStart命令。不知道我还应该发布什么Java Android Start\u redeliver\u重新启动服务需要很长时间(小时),java,android,cordova,service,Java,Android,Cordova,Service,我目前正在制作一个应用程序,用于轮询gps数据并将其上传到服务器。该服务在应用程序位于前台时启动,并在应用程序进入后台时保持运行。当应用程序被刷卡关闭时,将调用onTaskRemoved,报警管理器将重新启动该服务。该服务是一个IntentService,具有一个异步任务来发布gps坐标 这就是奇怪发生的地方。应用程序在前台停留的时间越长,Android使用START\u REDELIVER\u INTENT作为onstart中的返回命令重启它所需的时间就越长。这项服务很少被安卓系统终止,但一旦
@Override
public void onCreate() {
super.onCreate();
//Log.i(TAG, "OnCreate");
locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 0, this);
registerReceiver(sendHTMLReceiver, new IntentFilter("html_alarm"));
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
isCheckedIn = intent.getExtras().getBoolean("checkedIn");
showNotification("Courtesy Checkout Enabled");
}
return START_REDELIVER_INTENT;
}
我在使用START_Stick Service时遇到了类似的问题。我正面临着完全相同的问题,我正在后台进行蓝牙扫描。您是否找到了任何解决方案,如果是,请与我们分享。谢谢我离开了服务和alarmmanager,使用新的jobscheduler启动作业,轮询gps,在异步任务中将数据发送到服务器,然后停止作业。作业设置为每2分钟重复一次,因此新作业开始并重新开始。这比服务/报警管理器工作得更好。