之前可能已经提出这个问题,但似乎没有可行的答案。我们正在使用Retrofit 2.1.0异步回调,它在后台线程上执行请求。但是,当收到响应onResponse
时,它会在应用程序的UI线程上发回,而不管我是否在新线程中放置回调,迫使它不使用UI。
由于我们不想出于任何原因阻止主UI线程,是否可以在后台返回响应?
如果上述情况不可行,是否建议从响应中启动单独的线程以避免UI线程阻塞?
非常感谢任何帮助。谢谢!
答案 0 :(得分:25)
您可以为构建Retrofit
实例时要运行的回调指定特定的执行程序。以下是使用SingleThreadExecutor
进行回调的示例。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(/* your url */)
.callbackExecutor(Executors.newSingleThreadExecutor())
// other builder options...
.build();