Проблема в том, что я смешал синхронную и асинхронную логику.
@Override
protected Boolean doInBackground(Void... params) {
// ...
getUser.CurrUser(str).enqueue(new Callback<Info>() { // Строчка (*)
// Весь код ниже будет выполнен асинхронно
@Override
public void onResponse(@NonNull Call<Info> call, @NonNull Response<Info> response) {
// ...
if (mError.equals("successful"))
i = 0;
else {
// Никто не знает,
// когда конкретно это произойдёт
i = 1;
}
}
@Override
public void onFailure(@NonNull Call<Info> call, @NonNull Throwable t) {
// ...
}
// Весь код выше будет выполнен асинхронно
});
// Эта строчка выполнится сразу же
// после строчки (*)
return i == 0;
}
Способ решения — сделал запрос синхронно, (продолжил использовать AsyncTask), с использованием
execute
вместо
enqueue