Как прослушивать (не ждать) завершение результатов в параллельном потоке

#java #okhttp3

#java #okhttp

Вопрос:

У меня есть код в моем приложении для Android:

     homes=Get_HomeList(this, progressBar, view, mMap,MapsActivity.this);
    Log.v(TAG, "onMapReady: " homes.size());
  

Get_HomeList — это функция, которая извлекает данные из серверной части с помощью асинхронного вызова okhhttp.

Внутри этой функции у меня есть метод onsuccessful, с помощью которого у меня есть доступ к списку домов, который только что был извлечен.

Однако мне нужен список домов вне этой функции. но эта строка

 Log.v(TAG, "onMapReady: " homes.size());
  

выдает мне null для homes; Я предполагаю, это потому, что он выполняется в параллельном потоке, который еще не видел результатов home.

Теперь мой вопрос заключается в том, как можно справиться с этим и иметь возможность видеть извлеченные данные вне функции Get_HomList? Внутри этой функции это выглядит следующим образом:

             @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    try {
                        String responsedata = response.body().string();
                         homes= extractHomesUpdateMap(responsedata,mMap,mapsActivity);

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } else {

             }
  

Есть ли способ, чтобы при успешной и завершенной загрузке я мог передавать результаты за пределы Get_HomeList?Или вообще, как мы можем справиться с этими случаями?

Комментарии:

1. Вы должны делать то, что вы хотите сделать внутри этой функции обратного вызова.

2. Это то, что я делаю в настоящее время, но мне нужно сделать что-то, что, похоже, не может сделать это таким образом. эти две строки находятся в MapActivity. Я извлекаю дома в функции и добавляю маркеры в действие map. Однако, похоже, что для того, чтобы заставить прослушиватель нажимать маркеры, мне нужно реализовать некоторый интерфейс для map activity, который не может видеть список home.