停止位置侦听器服务 Android
Posted
技术标签:
【中文标题】停止位置侦听器服务 Android【英文标题】:Stop Location Listener Service 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服务。 嗯好的谢谢,我去看看 【参考方案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;
【讨论】:
以上是关于停止位置侦听器服务 Android的主要内容,如果未能解决你的问题,请参考以下文章
Android 位置服务:我可以为 GPS 和网络位置使用单个位置侦听器吗?
在我重新激活 WiFi/移动网络之前,服务中的 Android 位置侦听器不起作用