以下是我的服务中获取GPS
的代码。当我设置keepCyclingFlag = false
时,我想停止GPS
。我在我的片段中运行了这个位置服务,它运行得很好。但是,当我切换到使用服务时,这不会停止调用GPS
。当我尝试将位置管理器或侦听器设置为false时,它会使用nullpointer exception
使我的应用程序崩溃。我已经搜索过并迷路了。任何帮助将不胜感激。
感谢。
CODE
public void getUserLocation() {
user = null;
lm = (LocationManager) getSystemService(
this.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if (location.getAccuracy() < 100) {
gpsSignalReceived = true;
lat = location.getLatitude();
lon = location.getLongitude();
LatLng objLatLon = new LatLng(lat, lon);
if (!keepCyclingFlag){//if this flag is false then stop the GPS
lm.removeUpdates(locationListener);
lm = null;
Log.d("byi", "GPS SHOULD STOP");
}
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
};
bestProvider = lm.getBestProvider(criteria, true);
//Log.d("BYI", "Providers: " + lm.getProviders(true));
//lm.requestLocationUpdates(bestProvider, 0, 0, locationListener);
lm.requestLocationUpdates(lm.NETWORK_PROVIDER, 0, 0,locationListener);
lm.requestLocationUpdates(lm.GPS_PROVIDER, 0, 0,locationListener);
}
答案 0 :(得分:0)
我认为你只是通过两次注册同一个监听器来滥用LocationManager。 我会尝试两件事: