Я пытаюсь получить результат Соединения, чтобы обработать его с помощью Retrofit API, вот мой код:
public boolean connect() {
this.callback.enqueue(new Callback<T>() {
@Override
public void onResponse(@NonNull Call<T> call, @NonNull
Response<T> response) {
assert response.body() != null;
setConnectionValid(true);
try {
Log.d(Constants.TAG, "onResponse: " + response.body());
setResponse(response);
} catch (Exception e) {
Log.i(Constants.TAG, "onResponse: " +
e.getLocalizedMessage());
}
}
@Override
public void onFailure(@NonNull Call<T> call, @NonNull
Throwable t) {
setThrowable(t);
Log.i(Constants.TAG, "onError: " +
t.getLocalizedMessage());
setConnectionValid(false);
}
});
return isConnectionValid();
}
и выполнить метод connect в Controller
private void loginValidate() {
boolean isConnected;
RetroConnection retroConnection;
IRetrofit api = RetroSingleton.getRetroSingleton(context).create(IRetrofit.class);
Call<User> call = api.login(email.getText().toString(), password.getText().toString(), "token");
retroConnection = new RetroConnection<>(call);
isConnected= retroConnection.connect();
Log.i(TAG, "loginValidate: "+isConnected); //return false
if (isConnected) {
ToastMessage.message(context, ConstantMessages.LOGIN_SUCCESS);
} else {
ToastMessage.message(context, ConstantMessages.LOGIN_FAILED);
}
}
, ноответ занимает какое-то время, а isConnected всегда возвращает false.Дело в том, что нужен способ подождать, пока соединение установится, и обработать его без использования Threads.sleep (некоторое время);