重构领域以使用线程

时间:2017-08-20 15:19:43

标签: android multithreading realm rx-java

决定给一个领域穿线。

我有一个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进行线程化吗?说实话,我觉得我有些恶作剧。谢谢!

0 个答案:

没有答案