嗨,我正在做一个应用程序,使用融合的locationapi内部服务,每6秒将用户位置发送到服务器。问题是我不知道如何安排它使其运行每6秒。我是新手到android.so任何人帮助我。提前谢谢你
答案 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等等。唯一在所有设备上运行稳定的是使用前台服务。