Я до сих пор несколько новичок в rxAndroid/rxJava, поэтому у меня небольшие проблемы, обворачивающие мой разум вокруг этого, и если я все делаю правильно.Запросы SqlBrite на рабочие темы
Я использую SqlBrite для обновления RecyclerView с строками, возвращаемыми из курсора. Когда в таблице выполняется операция db, наблюдаемое ниже отвечает за повторный запрос данных. Я хочу вернуть CursorWrapper (ChecklistCursor), но хочу убедиться, что я запускаю запрос select * в рабочем потоке. Контрольный списокRecyclerAdapter подписывается на наблюдаемый контрольный список и отвечает за управление курсором.
Код, приведенный ниже, является единственным способом, с помощью которого я могу получить query.run() для запуска в рабочем потоке и подписки для возврата в основной поток.
Я думаю, это работает, но я не верю, что это будет стандартный способ сделать это. Может ли кто-нибудь предложить лучший метод, чем использование функции watchOn в два раза?
compositeSubscription.add(db.createQuery(Checklist.TABLE, Checklist.QUERY_ALL)
.observeOn(Schedulers.newThread())
.map(query -> new ChecklistCursor(query.run()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checklistListRecyclerAdapter));
Похоже, что предлагаемое предложение (заменяя observOn subscribeOn (Schedulers.io)) будет запускать карту в основном потоке. – tylerjroach