如何使用android中的服务每6秒获取一次位置更新

时间:2016-11-11 07:43:00

标签: android service fusedlocationproviderapi

嗨,我正在做一个应用程序,使用融合的locationapi内部服务,每6秒将用户位置发送到服务器。问题是我不知道如何安排它使其运行每6秒。我是新手到android.so任何人帮助我。提前谢谢你

2 个答案:

答案 0 :(得分:1)

我建议使用rxJava库 - 非常方便:

Subscription repeatingTask = 
Observable.interval(6, Timeunit.SECONDS)
// receive notification on background thead
.observeOn(Schedulers.computation())
.map( t -> {
  // do your work;
 return result;
}
.map(result -> {
 sendResult();
return result
})
// notify UI
.observeOn(AndroidSchedulers.mainThread)
.subscribe(r -> {
 // update UI
});

// unsubscribe when polling is no longer needed:
if (subscription != null && !subscription.isUnsubscribed()){
   subscription.unsubscribe();
   subscription = null;
}

答案 1 :(得分:0)

您可以通过创建foregroundService来解决此问题。这可能会解决您的服务在内存不足时被杀的问题。前台服务

  

是用户积极了解并且不是候选人的服务   系统在内存不足时杀死。 Source

有关通过此主题阅读的前台服务的一个很好的示例:Android - implementing startForeground for a service?

如果在位置发生变化时通知,请查看以下答案:https://stackoverflow.com/a/8600896/5183341

我还创建了一个类似的服务而不是你想要做的事情,总之我的服务在某些设备上遇到了问题。 (就像带有API19的LG2)。我尝试了很多不同的解决方案,例如使用重启服务的alarmmanager等等。唯一在所有设备上运行稳定的是使用前台服务。