retrofit/RxJava 调度器

retrofit/RxJava Scheduler

我有下面的代码行,运行 一个网络调用来检索令牌:

service.token(initAuth()).blockingGet()

而令牌函数有以下定义:func token : Single<Token>

理论上,调用需要在主线程中完成,因为创建的 retofitRxJava2CallAdapterFactory.create() 根据定义 运行 所有请求都在 mainThread 因此我调用 refresh/get 令牌需要触发 NetworkOnMainThreadException whish 不是这种情况。这些行为似乎是由于调用了 blockingGet,但文档并未说明使用了特定线程。

blockingGet does not operate by default on a particular Scheduler

这促使我询问调用是如何在另一个线程中完成的 mainThread

因为在我的示例应用程序中,我有 2 个网络调用 一个 来检索 cars,另一个用于检索 令牌。 Retrofit 以某种方式存储用于 cars 调用的调度程序并将其用于 token 调用。

定义cars调用:

.cars()
.subscribeOn(schedulerProvider.io())