Android GPS服务问题

时间:2012-01-25 02:10:00

标签: android geolocation gps

我有一个服务(带有唤醒锁),必须在捕获用户地理位置的幕后不断运行。 Service实现LocationListener方法(即onLocationChanged())。

然而,手机调用onLocationChanged()需要一些时间,所以在此期间我的服务必须做点什么。我想过使用Thread.sleep(),但这会阻止手机调用onLocationChanged()吗?或者我应该进行民意调查:while(i< 1000,000){++ i;}?

我没有使用这些想法获得如此丰富的GPS结果;想知道是否有人可以给我一个如何实现这一目标的提示。

3 个答案:

答案 0 :(得分:1)

我认为你可以使用wait(),并使用带有LocationListener实例的synchronize块来通知()。 使用wait(),notify()。

搜索样本

答案 1 :(得分:1)

我猜你想在等待位置变更信息时保持服务“活着”。这由系统负责,您不必为此添加代码。当位置更改信息可用时,将在您的服务上下文中调用onLocationChanged()。

答案 2 :(得分:0)

我通过删除WakeLock(浪费电池),执行10秒忙碌等待/线程休眠(以防万一阻止onLoc()的GPS调用)并使用AlarmManager将设备从睡眠状态唤醒来解决了这个问题并开始服务。

这:在睡眠期间获取GPS并且不会耗尽电池电量。