我需要在主线程上执行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线程上检测不成功的事务以及重试该事务的最佳实践是什么?
谢谢!