Слушатель местоположения не может быть остановлен после onDestroy () - PullRequest
0 голосов
/ 29 октября 2018

У меня есть приложение с двумя кнопками, которые запускают и останавливают отслеживание GPS. Я бы хотел, чтобы пользователь мог покидать приложение во время его работы, но при этом продолжать отслеживать местоположение. По возвращении пользователь должен иметь возможность остановить трекер с помощью кнопки остановки. Достаточно просто.

Проблема в том, что слушатель местоположения не может быть остановлен (removeUpdates) после закрытия и повторного открытия приложения. Я полагаю, что это связано с тем, что диспетчер местоположений, созданный в onCreate (), привязан к новому экземпляру слушателя местоположения, который не совпадает с тем, который остался в фоновом режиме при первом закрытии приложения.

Я не могу назначить Location Manager во время объявления, потому что для этого требуется контекст.

Мои объявления:

LocationManager myLocMan;
LocationListener myLocList = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        //Do things
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }
};

Вот соответствующий код из onCreate ():

myLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            myLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, myLocList);
            startButton.setEnabled(false);
            stopButton.setEnabled(true);
        }
    });

stopButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        myLocMan.removeUpdates(myLocList);
        startButton.setEnabled(true);
        stopButton.setEnabled(false);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...