我的应用正在使用requestLocationUpdates(来自GPS和网络,以先到者为准)。requestLocationUpdates不适用于服务
我的代码:
LocationManager lm = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
myLocationListenerInstance);
timeout = new Timer();
timeout.schedule(myGetLastKnownLocationInstance, TIMEOUT);
myGetLastKnownLocationInstance使用getLastKnownLocation。
我的问题:
当调用从当前正在运行的活动该代码,myLocationListenerInstance在不到TIMEOUT秒得到一个通知。
但是,当从后台服务调用时,我得到超时,输出是通过最后一个已知位置输出的。最糟糕的是,当调查测量位置时,时间戳小于TIMEOUT!
即使将TIMEOUT设置为一分钟,我也会收到此问题。
有什么建议吗?谢谢
似乎问题是位置更新只能从主UI线程请求。显然,在我的服务中,我使用了一些辅助线程。知道这一点,我仍然坚持.. – Mugen 2013-04-05 21:19:05
@Mugen,不,你可以肯定从后台服务调用requestLocationUpdates。我会阅读服务生命周期和线程处理,我的猜测是你的服务可能开始,然后只是停止......再回到我上面的答案。 – logray 2013-04-07 18:54:44