У меня есть приложение с двумя кнопками, которые запускают и останавливают отслеживание 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);
}
});