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

时间:2016-12-28 06:10:27

标签: java android multithreading retrofit2

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

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

如果上述情况不可行,是否建议从响应中启动单独的线程以避免UI线程阻塞?

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:25)

您可以为构建Retrofit实例时要运行的回调指定特定的执行程序。以下是使用SingleThreadExecutor进行回调的示例。

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