我有下面的代码行,该行运行网络调用以检索令牌:
service.token(initAuth()).blockingGet()
while标记函数具有以下定义:func token : Single<Token>
从理论上讲,该调用需要在主线程中完成,因为使用RxJava2CallAdapterFactory.create()
创建的 retofit 可以运行 mainThread 中的所有请求,因此我刷新/获取令牌的调用不需要触发NetworkOnMainThreadException
,情况并非如此。看来,这些行为是由于对blockingGet
的调用造成的,但是文档没有说明使用了特定线程。
默认情况下,blockingGet 在特定的 Scheduler
上不运行
哪个促使我问在mainThread
答案 0 :(得分:0)
因为在我的示例应用程序中,我有2个网络调用一个来检索汽车,另一个网络用于检索代币。 Retrofit以某种方式存储了用于汽车呼叫的调度程序,并将其用于令牌呼叫。
汽车呼叫的定义:
.cars() .subscribeOn(schedulerProvider.io())