如何重复不成功的Realm交易?

时间:2019-05-10 23:26:29

标签: java android realm

我需要在主线程上执行Realm事务,因为在RealmObjectChangeListener收到对象更改通知后,我正在更新UI,并且我需要有关事务是否成功执行的信息,因此如果事务没有成功执行,则可以重复执行该操作。 t。

当要知道交易是否成功时,我已经考虑过使用

realm.executeTransaction(r -> {
    r.insertOrUpdate(object);
});

,但是无法像executeTransactionAsync中那样覆盖onError,所以我无法获取错误信息。这样,交易成功了(例如95%的时间),而在其他情况下却悄然失败了。

我也尝试过

realm.executeTransactionAsync(r -> {
    r.insertOrUpdate(object);
}, error -> {
    error.printStackTrace();
    // here I should retry the transaction
});

这样,我得到警告“回调不能在当前线程上传递。Realm无法在没有循环程序的线程上自动更新”,所以我认为RealmObjectChangeListener无法以这种方式得到通知。

我的问题是-如何在UI线程上检测不成功的事务以及重试该事务的最佳实践是什么?

谢谢!

0 个答案:

没有答案