У меня есть приложение с двумя кнопками, которые запускают и останавливают GPS-слежение. Я бы хотел, чтобы пользователь мог выйти из приложения во время его работы, но при этом продолжал отслеживать местоположение. По возвращении пользователь должен иметь возможность остановить трекер с помощью кнопки остановки. Достаточно просто.
Проблема в том, что прослушиватель местоположения не может быть остановлен (removeUpdates) после закрытия и повторного открытия приложения. Я считаю, что это связано с тем, что диспетчер местоположения, созданный в onCreate (), привязан к новому экземпляру прослушивателя местоположения, который не совпадает с тем, который остается запущенным в фоновом режиме при первом закрытии приложения.
Я не могу назначить диспетчер местоположения во время объявления, потому что для него требуется контекст.
Мои заявления:
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);
}
});
если вы хотите использовать службу определения местоположения после того, как пользователь покинет приложение, вам придется переместить ее в службу
Камьяр, я надеялся, что слушатель будет работать, пока приложение закрыто, у меня просто возникают проблемы при его повторном открытии. Владислав, я вижу, мне придется придумать, как лучше всего поместить его в фоновый сервис. Я думал, что это работает, потому что местоположение продолжает отслеживаться после закрытия приложения. Спасибо вам обоим
привет добро пожаловать в stackoverflow. вы удалили прослушиватель местоположения в onDestroy (или onStop), и он все еще продолжает слушать?