Я пытаюсь использовать Retrofit и OkHttp для запроса на сервер. У меня есть следующий класс «AutomaticRequest.java», у которого есть запрос на получение видео с сервера.Как подождать, пока у Callback есть данные?
public class AutomaticRequest {
public void getVideos(final AutomaticCallback callback){
MediaproApiInterface service = ApiClient.getClient();
Call<List<AutomaticVideo>> call = service.getAllVideos();
call.enqueue(new Callback<List<AutomaticVideo>>() {
@Override
public void onResponse(Call<List<AutomaticVideo>> call, Response<List<AutomaticVideo>> response) {
List<AutomaticVideo> automaticVideoList = response.body();
callback.onSuccessGettingVideos(automaticVideoList);
}
@Override
public void onFailure(Call<List<AutomaticVideo>> call, Throwable t) {
callback.onError();
}
});
}
}
Я создал следующий класс «AutomaticCallback.java» для извлечения данных.
public interface AutomaticCallback {
void onSuccessGettingVideos(List<AutomaticVideo> automaticVideoList);
void onError();
}
Я звоню запрос от фрагмента, как следующий способ:
public class AllVideosFragment extends Fragment {
...
AutomaticCallback callback;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_allvideos, container, false);
new AutomaticRequest().getVideos(callback);
return view;
}
...
}
Как я могу подождать, пока обратный вызов не имеет данных для обновления пользовательского интерфейса ?? Спасибо.
синхронный запрос будет автоматически ждать ответа, но он не будет блокировать основной поток до тех пор. Вы должны сделать асинхронный запрос и, получив ответ, обновите UI. – nandsito