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

删除一个位置提供程序-android,android,location,Android,Location,我正在收听2个位置提供商的节目 locationManager.RequestLocationUpdate(locationManager.GPS\U提供程序, 500, 5,这),;locationManager.RequestLocationUpdate(locationManager.NETWORK\u提供程序, 500,5,这个), 是否有可能删除一个侦听器?例如,对于一个任务,我只想使用GPS更新,而在执行此任务时,我希望网络_提供程序将被禁用。这是可能的吗?我试着这样做: locat

我正在收听2个位置提供商的节目

locationManager.RequestLocationUpdate(locationManager.GPS\U提供程序, 500, 5,这),;locationManager.RequestLocationUpdate(locationManager.NETWORK\u提供程序, 500,5,这个),

是否有可能删除一个侦听器?例如,对于一个任务,我只想使用GPS更新,而在执行此任务时,我希望网络_提供程序将被禁用。这是可能的吗?我试着这样做:

locationManager.RemoveUpdate(此); locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,500,5,本)


但这并不是很好,因为如果GPS有固定点,这种方法会将其删除,GPS会再次开始搜索卫星。

您可以创建两个不同的
位置侦听器

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

您可以在一些预定义的时间之后使用计时器启动网络\u提供程序我应该如何初始化LocationListeners?因为当您使用它时,我也会得到null error,所以您可以删除“implements LocationListener”,因为您将使用这两个侦听器。