我正在尝试
http://developer.android.com/training/location/receive-location-updates.html的’LocationUpdates’样本.此应用程序获取并打印位置通知.
我正在尝试根据我的最新位置更改位置更新的间隔.
所以 – 我已将mLocationRequest.setInterval()添加到onLocationChanged中
结果非常错误.我的应用程序受到许多位置更新的轰炸(几秒钟!!!!)
我对样本的唯一更改是:
private int x=0; @Override public void onLocationChanged(Location location) { // Report to the UI that the location was updated mConnectionStatus.setText(R.string.location_updated); // In the UI,set the latitude and longitude to the value received mLatLng.setText(String.valueOf(x++)); mLocationRequest.setInterval(1000); // Change 1 mLocationClient.requestLocationUpdates(mLocationRequest,this); // Change 2 }
如何更改onLocationChanged内的间隔?
我认为问题是requestLocationUpdates重置了最后一个请求,然后立即发送另一个通知.所以创建了一个循环. (比最快的间隔快).所以我需要一种可靠的方法来改变“实时”LocationRequest的间隔
解决方法
你不应该调用mLocationClient.requestLocationUpdates(mLocationRequest,this);里面onLocationChanged(位置位置)
因为你再次注册听众,你将立即得到第一个电话.
所以我会做的是:
>不要调用mLocationClient.requestLocationUpdates(mLocationRequest,this);并查看是否反正mLocationRequest.setInterval(1000);正在生效
>如果这不起作用,请尝试取消注册侦听器,然后使用技巧等待再次使用新设置注册它,例如:
Handler h = new Handler(); @Override public void onLocationChanged(Location location) { //... all your code mLocationRequest.setInterval(1000); mLocationClient.removeLocationUpdates(LocationListener listener) h.postDelayed (new Runnable(){ public void run(){ mLocationClient.requestLocationUpdates(mLocationRequest,YOUROUTTERCLASS.this); } },1000); }