我正在尝试
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); }
所以在一秒钟内没有注册的监听器,因此你不会得到任何更新,之后,监听器将被注册该间隔.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。