获取位置数据后,从LocationManager取消订阅LocationListener

时间:2011-12-11 18:06:56

标签: android gps locationmanager locationlistener

由于某些原因,当我在requestLocationUpdates()方法之后添加removeUpdates()时,我根本没有获得任何位置数据。我没有正确取消订阅吗?

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 个答案:

答案 0 :(得分:1)

您可以尝试创建一个方法并在其中执行removeUpdates()。在获得数据后,从onLocationChanged()调用它。

答案 1 :(得分:0)

This可能会有所帮助。

您在获取位置数据后取消订阅,这意味着在onLocationChanged方法中。

答案 2 :(得分:-1)

我最终在我的Thread内创建了LocationHandler,其中嵌套while一直在循环,直到找到GPS位置。找到后我取消订阅LocationListener