【问题标题】:Stop Location Listener Service Android停止位置侦听器服务 Android
【发布时间】: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


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2012-08-26
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多