由于某些原因,当我在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();
}
}
答案 0 :(得分:1)
您可以尝试创建一个方法并在其中执行removeUpdates()。在获得数据后,从onLocationChanged()调用它。
答案 1 :(得分:0)
This可能会有所帮助。
您在获取位置数据后取消订阅,这意味着在onLocationChanged
方法中。
答案 2 :(得分:-1)
我最终在我的Thread
内创建了LocationHandler
,其中嵌套while
一直在循环,直到找到GPS位置。找到后我取消订阅LocationListener
。