在后台线程上改进2回调onResponse

Zis*_*han 13 java multithreading android retrofit2

这可能以前曾被问过,但似乎没有可行的答案.我们正在使用Retrofit 2.1.0异步回调,它在后台线程上执行请求.但是,当收到响应时,onResponse它会在应用程序的UI线程上发回,而不管我是否在新线程中放置回调,迫使它不使用UI.

由于我们不想出于任何原因阻止主UI线程,是否可以在后台返回响应?

如果无法实现上述目的,是否建议从响应中启动单独的线程以避免UI线程阻塞?

任何帮助将非常感激.谢谢!

iag*_*een 25

您可以为构建Retrofit实例时要运行的回调指定特定的执行程序.这是一个使用SingleThreadExecutorfor回调的示例.

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(/* your url */)
        .callbackExecutor(Executors.newSingleThreadExecutor())
        // other builder options...
        .build();
Run Code Online (Sandbox Code Playgroud)