【发布时间】:2017-11-05 09:36:16
【问题描述】:
我需要从位置侦听器中删除更新,我已经尝试了一些代码但无法正常工作。
我从片段调用了一个服务来获取位置更新,但是当我在我的位置监听器服务中点击一个调用此方法的触发器时,我需要停止位置监听器:
public void stopUsingGPS() {
if (locationManager != null) {
locationManager.removeUpdates(this);
locationManager = null;
stopSelf();
Toast.makeText(mContext, "off pressed" , Toast.LENGTH_SHORT).show();
}
}
但@Override onLocationChanged(Location location) 上的位置监听器仍在更新。
实际上,当我将 locationManager.removeUpdates(this); 放入 onLocationChanged(); 时,它正在工作
所以我尝试在onLocationChanged();中给出条件
Boolean stop = false;
public void stopUsingGPS() {
if (locationManager != null) {
stop = true;
Toast.makeText(mContext, "off pressed" , Toast.LENGTH_SHORT).show();
}
}
@Override
public void onLocationChanged(Location location) {
if(stop){
locationManager.removeUpdates(this);
}else{
Toast.makeText(mContext, String.valueOf(location.getLatitude()) , Toast.LENGTH_SHORT).show();
}
}
但仍然无法正常工作。即使我调用了stopUsingGPS() 方法,覆盖仍将 stop 读为 false。
请帮忙,在此先感谢。
【问题讨论】:
-
你在使用 LocationManager 类吗?如果是这样,该课程已经很老了,并且不支持该课程。我建议您改用 Fused Location 切换到 Google Location API。 developer.android.com/training/location/…当然,这个api需要设备有Google Play服务。
-
嗯好的谢谢,我去看看
标签: android locationlistener android-gps