API Firebase являются асинхронными, это означает, что метод onLocationResult()
возвращается сразу после его вызова, и обратный вызов из Задачи, которую он возвращает, будет вызван через некоторое время. Нет никаких гарантий относительно того, сколько времени это займет, может пройти от нескольких сотен миллисекунд до нескольких секунд, прежде чем эти данные станут доступны.
Поскольку этот метод возвращается немедленно, значение вашей переменной dist
, которую вы пытаетесь вернуть в результате метода, еще не будет заполнено из обратного вызова.
По сути, вы пытаетесь вернуть значение синхронно из API, который является асинхронным. Это не очень хорошая идея. Вы должны обрабатывать API-интерфейсы асинхронно, как и предполагалось.
Быстрое решение этой проблемы - использовать значение вашей переменной dist
только внутри метода onLocationResult()
, в противном случае я рекомендую вам увидеть последнюю часть моего ответа из этого post , в котором я объяснил, как это можно сделать с помощью пользовательского обратного вызова. Вы также можете взглянуть на это видео для лучшего понимания.