我需要 :
- 在后台线程上从 API 获取一些数据
- 在 UI 上显示数据
保存到领域。
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());
}
}