Нужен ли мне слушатель и обратный вызов с FusedLocationProviderClient? - PullRequest
0 голосов
/ 23 апреля 2019

Я начал использовать FusedLocationClient, и я не уверен, зачем мне нужны и OnSuccessListener, и LocationCallback.Разве одного из них не достаточно?

private void initLocationCallback(Context context) {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
    fusedLocationClient.getLastLocation()
            .addOnSuccessListener(new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {
                    onLocationChanged(location);
                }
            });

    locationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {
            if (locationResult != null) {
                for (Location location : locationResult.getLocations()) {
                    if (location != null) {
                        onLocationChanged(location);
                    }
                }
            }
        }
    };
    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setInterval(INTERVAL);
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, context.getMainLooper());  
}
private void onLocationChanged(Location location) {
    // use location...
}

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Если вас не интересует точное местоположение пользователя в данный момент, тогда lastKnownLocation () и OnSuccessListener будет достаточно, и вам не нужен LocationCallback.

Но если вам нужно точное местоположение и регулярные обновления в случае, если пользователь находится в движении, вам необходимо реализовать LocationCallback, чтобы получать обновления местоположения. В этом случае обычно требуется последнее известное местоположение, поскольку получение обновления местоположения может занять некоторое время.

0 голосов
/ 23 апреля 2019

Согласно документации при получении lastKnownLocation(), OnSuccessListener должно быть достаточно и в редких случаях Местоположение может быть нулевым.

Личность Я также использую OnSuccessListener()

...