一旦您调用取消注册位置侦听器,Gps 状态侦听器就会停止运行

Posted

技术标签:

【中文标题】一旦您调用取消注册位置侦听器,Gps 状态侦听器就会停止运行【英文标题】:Gps status listener stops functioning once you call de-register a location listener 【发布时间】:2013-09-03 04:43:32 【问题描述】:

一旦您在LocationManager 实例上调用removeUpdatesGpsStatus.Listener 中的onGpsStatusChanged 就会停止调用。我最初遇到了this 问题,我已修复。我正在尝试在基于 gps 的位置跟踪和基于网络的位置跟踪之间切换。我已经研究过this 和this。他们谈论的大多数地方都同时向两个提供商请求位置更新。恐怕这种方法会耗尽电池

因此我做了如下的事情。我有两个LocationListeners:gpsListenerntListener

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 状态侦听器就会停止运行的主要内容,如果未能解决你的问题,请参考以下文章

位置侦听器从服务而不是 IntentService 工作

GPS Android - 只定位一次

仅当侦听器为该提供者注册时才调用 onProviderEnabled 吗?

安卓全球定位系统。位置侦听器不想获得修复:(

更新身份验证状态时未调用 Bloc 侦听器?

在后台每 10 分钟检查一次位置