我有以下代码:
if (gps_enabled) {
Log.e("$$$$$$$$$$$$$$",
"GPS is enabled requestion location updates... interval value is: "
+ interval);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListenerGps);
}
else{
if (network_enabled) {
Log.e("$$$$$$$$$$$$$$",
"Network is enabled requestion location updates... interval value is: "
+ interval);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,
0, locationListenerNetwork);
}
}
使用该代码我可以获取位置(至少使用网络提供商!(另一个帖子上的另一个问题)) 我希望每隔一小时就会定期收到通知,但是将参数传递给requestLocationUpdates并不能保证会保留这个间隔(至少我的测试是显示的,因为我希望每分钟更新一次但得到很多更新而不是一个!) 所以我想使用timerTask并安排它,我现在有
timer1.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getLocation();
}
}, 0, 180000);// 3 minutesr...
其中getLocation是我之前调用的方法,但是当计时器调用该方法时没有任何反应,日志在此时停止
Log.e("$$$$$$$$$$$$$$",
"Network is enabled requestion location updates... interval value is: "
+ interval);
我从未收到有关我的位置的通知。 任何想法?
答案 0 :(得分:7)
好了我花了一段时间,但我找到了解决方案,因为文档说你只能从looper线程请求位置管理器的位置更新,这意味着当调用计时器任务时你必须获得一个消息并将消息发送给处理程序,处理程序将负责请求位置更新。