停止位置监听器服务Android

时间:2017-06-04 14:03:56

标签: android locationlistener android-gps

我需要从位置监听器中删除更新,我已经尝试了一些代码但没有工作。

我从片段调用了一个服务来获取位置更新,但是当我点击在我的位置监听器服务中调用此方法的触发器时,我需要停止位置监听器:

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) 方法,覆盖仍然读取停止为假。

请提前帮助,谢谢。

1 个答案:

答案 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;
}