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