retrofit/RxJava 调度器
retrofit/RxJava Scheduler
我有下面的代码行,运行 一个网络调用来检索令牌:
service.token(initAuth()).blockingGet()
而令牌函数有以下定义:func token : Single<Token>
理论上,调用需要在主线程中完成,因为创建的 retofit 和 RxJava2CallAdapterFactory.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())
我有下面的代码行,运行 一个网络调用来检索令牌:
service.token(initAuth()).blockingGet()
而令牌函数有以下定义:func token : Single<Token>
理论上,调用需要在主线程中完成,因为创建的 retofit 和 RxJava2CallAdapterFactory.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())