сбой при отмене регистрации прослушивателя в Android

#android #networking #gps #listener

#Android #сеть #gps #прослушиватель

Вопрос:

У меня есть кнопка, когда я нажимаю на нее, она вызывает метод whatIsEnabled () (GPS, сеть или оба) и регистрирует прослушиватель местоположения. Моя проблема в том, что когда я запускаю его без методов onPause () и on Resume, это работает (выполняется, поэтому я благодарен, когда это работает), но когда я нажимаю на onPause motos, чтобы отменить регистрацию прослушивателя, это приводит к сбоям. Код:

 private OnClickListener location_button = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationListener = new Coordonates(drawable, mapView, Map.this);

        switch(Settings.whatIsEnabled()) {
        case 1: {
            Toast.makeText(context, "Location services disabled",Toast.LENGTH_LONG).show();
            break;
        }
        case 2: {
            Toast.makeText(context, "Location obtained via GPS satellites",Toast.LENGTH_LONG).show();
            Toast.makeText(context, "Waiting for location",Toast.LENGTH_LONG).show();
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 50,locationListener);
            break;
        }
        case 3: {
            Toast.makeText(context, "Location obtained via Wi-Fi/mobile network",Toast.LENGTH_LONG).show();
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 1000, locationListener);
            break;
        }/*
        case 4: {
            Toast.makeText(context, "Location obtained via the best provider available",Toast.LENGTH_LONG).show();
            locationManager.
            break;
        }*/
        }
    }
};

protected void onResume() {
    super.onResume();
}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    locationManager.removeUpdates(locationListener);
    super.onPause();

}
  

Комментарии:

1. Является locationManager закрытым участником или вашим классом activity? Также вы всегда должны сначала вызывать базовый класс с переопределенным методом, прежде чем делать что-либо еще.

2. Можете ли вы добавить сведения о logcat для сбоя.