删除一个位置提供程序 - android

时间:2013-10-18 08:00:12

标签: android location

我正在听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开始再次搜索卫星。

1 个答案:

答案 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);