0

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

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

但是服务在监听事件到达位置信息之前退出。

如果我注释掉接收到位置的 stopSelf。

如何让服务等到收到位置。我想过将 stopSelf 放在 onLocationChanged 的​​事件中,但它可能并不总是触发。

我想到的另一种方法是实现线程睡眠,但这感觉就像代码异味。

4

1 回答 1

0

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

于 2012-07-21T18:12:18.817 回答