一旦您调用取消注册位置侦听器,Gps 状态侦听器就会停止运行
Posted
技术标签:
【中文标题】一旦您调用取消注册位置侦听器,Gps 状态侦听器就会停止运行【英文标题】:Gps status listener stops functioning once you call de-register a location listener 【发布时间】:2013-09-03 04:43:32 【问题描述】:一旦您在LocationManager
实例上调用removeUpdates
,GpsStatus.Listener
中的onGpsStatusChanged
就会停止调用。我最初遇到了this 问题,我已修复。我正在尝试在基于 gps 的位置跟踪和基于网络的位置跟踪之间切换。我已经研究过this 和this。他们谈论的大多数地方都同时向两个提供商请求位置更新。恐怕这种方法会耗尽电池。
因此我做了如下的事情。我有两个LocationListener
s:gpsListener
和ntListener
:
Listener mGPSListener = new GpsStatus.Listener()
@Override
public void onGpsStatusChanged(final int event)
switch (event)
case GpsStatus.GPS_EVENT_STARTED:
locMgr.removeUpdates(ntListener);
locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 50, gpsListener);
break;
case GpsStatus.GPS_EVENT_STOPPED:
locMgr.removeUpdates(gpsListener);
locMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 120000, 50, ntListener);
break;
;
现在有一次,locMgr.removeUpdates
被击中,onGpsStatusChanged
停止被调用。我尝试了几件事,例如在调用removeUpdates
尝试不同的gps 状态侦听器后添加addGpsStatusListener
等。还没有成功。难道我做错了什么?
【问题讨论】:
【参考方案1】:您必须在两个地方调用 requestLocationUpdates 之前添加以下行:
locMgr.addGpsStatusListener(ntListener);
locMgr.addGpsStatusListener(gpsListener);
【讨论】:
以上是关于一旦您调用取消注册位置侦听器,Gps 状态侦听器就会停止运行的主要内容,如果未能解决你的问题,请参考以下文章