[Фон] У меня есть приложение, в котором есть список магазинов в базе данных с идентификаторами мест, сохраненными в поле.Когда пользователь вводит свое местоположение, приложение должно отображать, среди списка магазинов в базе данных, магазины, которые находятся ближе всего к пользователю.Таким образом, код будет проходить по каждому идентификатору Shop Place, получать Lat / Long из Google Places и вычислять расстояние от местоположения пользователя.Вот фрагмент кода ниже:
for (int position = 0; position < results.size(); position++) {
// Get the placeID
String placeId = results.get(position).getAddress();
// Specify the fields to return.
List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME,
Place.Field.LAT_LNG, Place.Field.ADDRESS);
// Construct a request object, passing the place ID and fields array.
FetchPlaceRequest request = FetchPlaceRequest.builder(placeId, placeFields)
.build();
// create a FetchPlaceResponse task
Task<FetchPlaceResponse> task = placesClient.fetchPlace(request);
try {
// wait for the task to finish
FetchPlaceResponse response = Tasks.await(task);
Place place = response.getPlace();
// Get the latitude and longitude for the place
LatLng latLng = place.getLatLng();
// Set the location object for the specific business
Location A = new Location("Business");
A.setLatitude(latLng.latitude);
A.setLongitude(latLng.longitude);
// get the distance of the business from the user location
float distance = A.distanceTo(mUserLocation);
В журналах я заметил, что код работает медленно (около 7 секунд) во время первого / первого запуска.Однако последующие запуски / запросы выполняются быстрее, примерно за 2 секунды.
Итак, во время входа в систему я впервые запустил места в Google с использованием фиктивного идентификатора места.Результат, очевидно, потерпит неудачу, но, по крайней мере, во время первого запуска пользователя с реальными идентификаторами места результаты были быстрее на 2 секунды.Есть ли причины, по которым это происходит?