Отмените подписку LocationListener от LocationManager после получения данных о местоположении - PullRequest
0 голосов
/ 11 декабря 2011

По какой-то причине, когда я добавляю removeUpdates () после метода requestLocationUpdates (), я вообще не получаю никаких данных о местоположении.Я правильно не отписался?

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 5000, 1, mlocListener);
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 5000, 1, mlocListener);
mlocManager.removeUpdates(mlocListener);


public class MyLocationListener implements LocationListener
    {
        @Override
        public void onLocationChanged(Location loc)
        {
            loc.getLatitude();
            loc.getLongitude();
            String text = "My current location is: " +
            "Latitude = " + loc.getLatitude() +
            "Longitude = " + loc.getLongitude();
            System.out.println("FINISHED:");
            Toast.makeText( getApplicationContext(),
                    text,
                    Toast.LENGTH_SHORT).show();

        }
}

Ответы [ 3 ]

1 голос
/ 11 декабря 2011

Вы можете попытаться создать один метод и выполнить в нем removeUpdates (). и вызовите его из onLocationChanged () после получения ваших данных.

0 голосов
/ 12 января 2012

В итоге я создал Thread внутри моего LocationHandler с вложенным while, который продолжал работать до тех пор, пока не было найдено местоположение GPS. Когда нашел, я отписался мой LocationListener.

0 голосов
/ 11 декабря 2011

Это может помочь.

Вы отмените подписку после того, как вы получили данные о местоположении, что означает метод onLocationChanged.

...