首页 > 解决方案 > FusedLocationClient 故障排除服务中断场景

问题描述

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

    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());
}

标签: javaandroidgoogle-maps

解决方案


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


推荐阅读