Метод обновления местоположения Android GPS не работает в режиме "Создать карту"

У меня проблема с LocationManager учебный класс:

Я хочу обновить свое текущее местоположение в onCreate() класса, расширенного от MapActivity:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs = new MyLocationListener();       
lcs.onLocationChanged(lm.getLastKnownLocation(LocationManager.GPS_PROVIDER));

в то время как getLastKnownLocation() возвращает местоположение, но неточно, я хочу позвонить LocationManager.requestLocationUpdates() который возвращается null в onCreate():

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs=new MyLocationListener();         
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, lcs);

Может кто-нибудь сказать мне, как я смогу получить мое текущее местоположение в моем onCreate()?

3 ответа

Спасибо, ребята, что откликнулись и дали очень разумное предложение, но, к сожалению, это не сработало для меня.

Я достиг своей цели, реализовав небольшую задержку, и все стало работать нормально, и моя основная цель - найти местоположение в методе Oncreate. Он пришел к выводу, что метод OnCreate вызывается первым, а потом OnResume, если вы хотите получить текущее местоположение с помощью ранжирования карты, вам придется сначала подождать, пока карта будет отображаться, а затем вызвать код обновления местоположения.

LocationManager только общается с вашим кодом, используя прилагаемый слушатель. Когда доступно новое исправление местоположения, onLocationChanged() будет вызван в lcs экземпляр MyLocationListener класс ваш создал.

Вы не хотите рисковать принудительным закрытием приложения во время ожидания первого исправления местоположения в onCreate(),

Лучшей практикой является регистрация вашего LocationListener в onResume() а также снова отмените регистрацию в onPause() с помощью LocationManager.removeUpdates(LocationListener), Ваши пользователи будут благодарны вам за то, что вы не разряжаете свою батарею, когда ваше приложение не на переднем плане:)

Другие вопросы по тегам