我正在听2个位置提供商
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5,这一点); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500,5,这个);
有可能以某种方式删除一个监听器?例如,对于一项任务,我只想使用GPS更新,在执行此任务时,我希望禁用NETWORK_PROVIDER。有可能以某种方式?我试着这样做:
locationManager.removeUpdates(本); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,500,5,this);
但这并不是很好,因为如果GPS已修复,这种方法正在移除它,GPS开始再次搜索卫星。
答案 0 :(得分:3)
您可以创建两个不同的LocationListener
:
private LocationListener gpsListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
if(location != null){
// do your work for gps location
}
}
};
private LocationListener networkListener = .... // same init as gpsListener
并使用如下:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5, gpsListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 5, networkListener);
然后您可以使用您正在进行的方法,而不会丢失GPS修复。 而不是:
locationManager.removeUpdates(this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5,this);
您将使用:
locationManager.removeUpdates(networkListener);