Android服务中的stopSelf在退出之前不会给onLocationChanged触发机会

问题描述 投票:0回答:1

我已经设置了一项服务,该服务基本上每15分钟运行一次,并在GPS提供程序上执行requestLocationUpdates。我在服务中设置了侦听器。

现在,当onStartCommand方法结束时,我执行stopSelf,因为我希望该服务在另外15分钟内终止,它将使用AlarmManager再次启动。

但是该服务在侦听事件与位置信息一起到达之前退出。

如果我注释掉stopSelf表示已收到该位置。

我如何让服务等待接收到该位置。我曾考虑过在onLocationChanged事件中放置stopSelf,但它可能并不总是会触发。

尽管我的另一种方式是实现线程睡眠,但这感觉像是代码的味道。

android android-service locationmanager
1个回答
0
投票

仅获取一个位置,请使用LocationManager.requestSingleUpdate()并在onLocationChanged()中调用service.stopSelf()。如果您担心GPS会无限期地搜索定位信息(也许用户在山洞中),请设置计时器并在超过特定时间段时停止服务。

© www.soinside.com 2019 - 2024. All rights reserved.