можно ли в любом случае указать java rx использовать текущий поток в функцииObservOn? Я пишу код для синкадаптера Android и хочу, чтобы результаты наблюдались в потоке адаптера синхронизации, а не в основном потоке.
Пример сетевого вызова с Retrofit + RX Java выглядит примерно так:
MyRetrofitApi.getInstance().getObjects()
.subscribeOn(Schedulers.io())
.observeOn(<current_thread>)
.subscribe(new Subscriber<Object>() {
//do stuff on the sync adapter thread
}
Я пытался использовать с помощью
...
.observeOn(AndroidSchedulers.handlerThread(new Handler(Looper.myLooper())))
...
это то же самое, как android rx создает планировщик для основного потока, но больше не работает, как только я заменяю Looper.myLooper()
на Looper.getMainLooper()
.
Я мог бы использовать Schedulers.newThread(), но из-за его сложного кода синхронизации с большим количеством вызовов сервера я бы постоянно создавал новый поток только для того, чтобы запускать новые сетевые вызовы, которые снова создают новые потоки для запуска большего количества сетевых вызовов. Есть ли способ сделать это? Или мой подход сам по себе совершенно неверен?
subscribeOn
иobserveOn
вместе и просто оставайтесь в потоке адаптера синхронизации все время. Или я неправильно понял ваш вопрос, и вы хотите создавать новые темы, но все они должны просто вернуться к теме, с которой вы начали? - person david.mihola   schedule 20.11.2015