【问题标题】:retrofit/RxJava Scheduler改造/RxJava 调度程序
【发布时间】:2019-04-10 15:07:37
【问题描述】:

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

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

而令牌函数的定义如下:func token : Single<Token>

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

blockingGet 默认不会在特定的Scheduler

上运行

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

【问题讨论】:

    标签: multithreading retrofit2 rx-java2 scheduler


    【解决方案1】:

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

    汽车调用的定义:

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

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2016-03-27
      • 2016-06-28
      相关资源
      最近更新 更多