У меня есть база данных Firestore, которая содержит 100 локаций, каждая с правильно установленными lat
и lng
.Я создал метод для фактического чтения данных из базы данных с помощью обратного вызова:
public static void readLocations(MyCallback myCallback) {
locationsRef.get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
List<LocationModel> locationList = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
LocationModel locationModel = document.toObject(LocationModel.class);
locationList.add(locationModel);
}
myCallback.onCallback(locationList);
}
});
}
Я использую LocationCallback
для отслеживания текущей позиции.Используя следующий код, я вызываю метод readLocations()
внутри LocationCallback, чтобы выполнить некоторые математические расчеты относительно некоторых расстояний:
LocationCallback locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
for (Location myLocation : locationResult.getLocations()) {
currentLocation = myLocation;
LatLng currentLatLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());
readLocations(locationList -> {
for (LocationModel lm : locationList) {
Double lat = lm.getLat();
Double lng = lm.getLng();
Location location = new Location("");
location.setLatitude(lat);
location.setLongitude(lng);
//Calculations
}
});
}
}
};
Поэтому каждый раз, когда текущее местоположение изменяется, я вычисляю расстояние между текущим местоположениеми местоположения из базы данных.То есть, вызывая метод readLocations()
каждый раз, когда позиция меняется, это означает, что я запрашиваю базу данных каждый раз?Другими словами, каждый раз, когда текущее местоположение изменяется, мне платят 100 операций чтения?Или, поскольку я уже использовал вызов get()
, будет считаться одной операцией?