Реализация пользовательских okhttp3.Callback
Как правило, когда я получаю ответ от okhttp3 Callback, код успешен, и я обрабатываю интерфейс с телом Response. Обычно это включает в себя размещение строк внутри runOnUIThread()
или new Handler(Looper.getMainLooper()).post(...)
, Чтобы сэкономить на аде табуляции это иногда создает и разделить коды транспортного уровня на отдельные обратные вызовы, могу ли я сделать что-то подобное?
public abstract class AbsCustomCallback implements okhtt3.Callback {
@Override
public abstract void onFailure(Call call, IOException e);
@Override
public void onResponse(Call call, final Response response) throws IOException {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
if (response.isSuccessful()) {
onSuccessMainThread(response);
} else {
onFailureCodeMainThread(response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public abstract void onSuccessMainThread(Response response) throws IOException;
public abstract void onFailureCodeMainThread(Response response) throws IOException;
}
Будет ли эта реализация работать всегда? Это заставит новый CustomCallback реализовать методы обратного вызова onFailure, onSuccessMainThread и onFailureCode.