决定给一个领域穿线。
我有一个Repository类,其中我将一些Data
推送到Realm。另一种方法是根据需要稍微改变Data
。还有一种查询方法,它在findAllSorted()
类上执行Data
并返回Observable
结果。
我首先开始在Observables
中包装所有方法代码(包括获取Realm实例)并执行.subscribeOn(Schedulers.single())
。
插入工作正常,但正在执行realm.where(Image::class.java).findAll(...)
抛出“需要在带有looper的线程上执行。添加observeOn(AndroidSchedulers.mainThread)
throws “对象只能在创建它们的线程上访问”。当我重构所有Observable以在subscribeOn
的UI线程上运行时,同样的故事就会出现。
所以我想,我会再回到使用Realm集成线程模型(带后缀Async
的方法)。现在插入不起作用,因为Realm为每个realm.executeTransactionAsync
生成多个唯一线程,因此“插入”操作在Pool-1-Thread-1线程上运行,而“transform”操作在Pool-1上运行-Thread-2显然,“对象只能在创建它们的线程上访问”。
这里有人使用Realm进行线程化吗?说实话,我觉得我有些恶作剧。谢谢!