дооснащение / RxJava планировщик - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть строка кода ниже, которая запускает сетевой вызов для получения токена:

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

, в то время как функция токена имеет следующее определение: func token : Single<Token>

Теоретически, вызов должен быть выполнен в основном потоке, потому что создан retofit с RxJava2CallAdapterFactory.create(), который по определению выполняет весь запрос в mainThread , следовательно, мойДля обновления / получения токена необходимо вызвать NetworkOnMainThreadException, но это не так.Кажется, что это происходит из-за вызова blockingGet, но в документации не указано, что используется определенный поток.

blockingGet по умолчанию не работаетопределенный планировщик

Что заставляет меня спросить, как выполняется вызов в другом потоке, чем mainThread

1 Ответ

0 голосов
/ 11 апреля 2019

Потому что в моем примере приложения у меня есть две сети, которые вызывают одну , чтобы получить машины , а другую - для получения токена .Каким-то образом Retrofit сохраняет планировщик, используемый для вызова cars и использует его для вызова token .

Определение cars call:

.cars()
.subscribeOn(schedulerProvider.io())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...