Область, сетевые операции, подписка и наблюдение в разных потоках с помощью RxJava
Мне необходимо :
Получить некоторые данные из API в фоновом потокеОтображение данных в интерфейсеСохранить в царство.
fetchItemsFromServer().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<ItemList>() {
@Override
public void call(ItemList items) {
displayItems(items);
try {
realm.beginTransaction();
realm.copyToRealmOrUpdate(itemList);
realm.commitTransaction();
Logger.v("Realm ", "Copied list object to realm");
} catch (Exception e) {
Logger.e("Realm Something went wrong ", e);
realm.cancelTransaction();
}
}
}
Это выдает ошибку:доступ к области из неверной темы
У меня есть 4 вкладки, извлекающие разные сообщения одновременно.
fetchItemsFromServer () является интенсивным вызовом, и ограничение этого вызова одним потоком не годится. Мне нужна эта гибкость.
Кто-нибудь нашел обходные пути, используя царство таким образом?
Большинство примеров, например, как правило, направлены на выборку из Realm против работы с сетевыми операциями:
Пример ниже:
Rxjava -https://realm.io/news/realm-java-0.87.0/
Использование области с RxJava -https://realm.io/news/using-realm-with-rxjava/ (предыдущее решение, но недостатки производительности)
My Realm предоставляется модулем базы данных через внедрение зависимостей (Dagger 2)
@Module
public class DatabaseModule {
public static final String REALM_FILE_NAME = "Realm name";
@Provides
Realm providesRealmInstance(Context context) {
return Realm.getInstance(
new RealmConfiguration.Builder(context)
.name(REALM_FILE_NAME)
.build());
}
}