Java 实现自定义okhttp3.Callback
通常,当我从okhttp3回调中得到响应时,代码是成功的,我用响应体处理ui。这通常涉及将行放在Java 实现自定义okhttp3.Callback,java,android,multithreading,okhttp3,Java,Android,Multithreading,Okhttp3,通常,当我从okhttp3回调中得到响应时,代码是成功的,我用响应体处理ui。这通常涉及将行放在runOnUIThread()或新处理程序(Looper.getMainLooper()).post(…)中。为了节省有时会创建的标签地狱,并将传输层代码分离为单独的回调,我可以这样做吗 public abstract class AbsCustomCallback implements okhtt3.Callback { @Override public abstract void
runOnUIThread()
或新处理程序(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回调方法 什么是“制表地狱”?“制表地狱”只是一堆嵌套回调,您需要在其中为新块制表。它看起来不太漂亮,有时很难阅读。例如,有okhttp回调,要执行ui线程工作,您需要创建一个新的处理程序,因此任何执行ui工作的http回调都有两个缩进级别。我认为如果您在handler中添加onFailureCode,就会有缩进。什么是“tabbing hell”?“tabbing hell”只是一组嵌套回调,需要为新块设置选项卡的位置。它看起来不太漂亮,有时很难阅读。例如,有okhttp回调,要执行ui线程工作,您需要创建一个新的处理程序,因此任何执行ui工作的http回调都有两个缩进级别。我认为,如果在处理程序中添加onFailureCode,则会有两个缩进级别