改造 2 回调在后台线程上响应

2022-09-03 05:19:18

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

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

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

任何帮助将不胜感激。谢谢!


答案 1

您可以在构建实例时为要在其上运行的回调指定特定的执行器。下面是一个将 用于回调的示例。RetrofitSingleThreadExecutor

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

答案 2

推荐