我需要从位置监听器中删除更新,我已经尝试了一些代码但没有工作。
我从片段调用了一个服务来获取位置更新,但是当我点击在我的位置监听器服务中调用此方法的触发器时,我需要停止位置监听器:
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()
但仍然无法正常工作。即使我调用class Reservation(models.Model):
company = models.ForeignKey(GuestContact, on_delete=models.PROTECT)
class GuestContact(models.Model):
company = models.CharField(max_lenght=30)
last_name = models.CharField(max_lenght=30)
first_name = models.CharField(max_lenght=30)
方法,覆盖仍然读取停止为假。
请提前帮助,谢谢。
答案 0 :(得分:-1)
onStartCommand
---> Service.START_STICKY
@Override
public void onDestroy() {
locationManager.removeUpdates(listener);
locationManager=null;
super.onDestroy();
Log.v("STOP_SERVICE", "DONE");
locationManager.removeUpdates(listener);
locationManager=null;
}