FusedLocationClient 故障排除服务中断场景

Posted

技术标签:

【中文标题】FusedLocationClient 故障排除服务中断场景【英文标题】:FusedLocationClient troubleshooting Out of Service Scenario 【发布时间】:2018-11-06 12:34:13 【问题描述】:

我目前能够在服务可用时接收位置更新,但如果服务不可用,我需要得到响应,以便我可以调用另一种方法来处理这种情况。从我收集到的信息来看,就使用 requestLocationUpdates() 而言,这是我必须使用的仅有的两种方法 onLocationResult() 和 onLocationAvailability()。我从 onLocationAvailabilty 得到的响应似乎不是很准确,如果我真的停止服务,这个方法可能不会被 fusedLocationClient 调用一段时间。我的另一个问题是 onLocationResult 似乎没有让我知道是否没有结果,这对我来说非常有用。了解 fusedLocationClient 是否找不到位置或当前停止服务的最佳方法是什么? locationAvailability.isLocationAvailable() 往往会给我一个不可靠的答案,即即使我有服务也是假的......

    mFusedLocationClient.requestLocationUpdates(mLocationRequest, callback = new LocationCallback() 

                @Override
                public void onLocationResult(LocationResult locationResult) 
                    // do work here
                    onLocationChanged(locationResult.getLastLocation());

                @Override
                public void onLocationAvailability(LocationAvailability locationAvailability) 

                
            , Looper.myLooper());

【问题讨论】:

你能在这里发布 logcat 吗?另外,你有一个干净的项目可以重现这个吗? 抱歉,我无法为此提供项目代码。 【参考方案1】:

因此,我发现最好的解决方案是实现 LocationListener 并利用 onStatusChanged() 方法,该方法在用户退出服务和重新投入服务时给出响应。

【讨论】:

以上是关于FusedLocationClient 故障排除服务中断场景的主要内容,如果未能解决你的问题,请参考以下文章

FusedLocationClient.getLastLocation(),永远不会到达 onSuccess

FusedLocationClient 为一些用户返回空值

结构化的网络故障检测与排除方法

FusedLocationClient.requestLocationUpdates 文档和谷歌培训文档之间的差异

深信服故障防火墙设备更换

Java程序导致服务器CPU占用率过高的问题排除过程