Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现自定义okhttp3.Callback_Java_Android_Multithreading_Okhttp3 - Fatal编程技术网

Java 实现自定义okhttp3.Callback

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

通常,当我从okhttp3回调中得到响应时,代码是成功的,我用响应体处理ui。这通常涉及将行放在
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,则会有两个缩进级别