问题是无论在哪个线程上发出请求,回调都会在主线程上返回。您可以让回调飞到后台,但为此您需要按照此答案中的描述更改配置:https ://stackoverflow.com/a/41370867/5709159
...
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(/* your url */)
.callbackExecutor(Executors.newSingleThreadExecutor()) <--- THIS LINE
// other builder options...
.build();
...
但是所有回调都会在后台到达,我需要能够控制哪些回调在后台到达,哪些在 main 中,为此,在请求所在的同一线程上接收回调会非常方便被制作了,但我有这样的选择,我看不到。
问题是如何在请求之前确定在哪个线程上接收回调?我不想有两种 Retrofit 配置(如上所述),一种是背景指示,另一种是默认配置。
当您需要在主(或可配置)线程上接收响应时,使用带有回调的异步请求
当您需要在调用线程上获得响应时,使用同步(阻塞)请求