FusedLocationClient故障排除停止服务方案

时间:2018-05-27 23:45:23

标签: java android google-maps

我目前能够在服务可用时接收位置更新,但如果服务不可用,我需要获得响应,以便我可以调用另一种方法来处理这种情况。从我收集的内容来看,这些是onLocationResult()和onLocationAvailability()的唯一两个方法,我必须使用requestLocationUpdates()。我从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());
}

1 个答案:

答案 0 :(得分:0)

我找到的最佳解决方案是实现LocationListener并使用onStatusChanged()方法,该方法在用户步骤停止服务时提供响应,并在他们重新投入服务时再次提供响应。