0

我在我的应用程序中使用领域来持久化。

目前,我有一个简单的分页方式的项目列表。

  • 发出服务器请求
  • 取回物品
  • 更新用户界面
  • 将列表保存到领域
  • 用户滚动到列表的末尾,获取下一组元素并
    在上面重复

领域代码:

    try {
      mDbManager.beginTransaction();
        mDbManager.copyToRealm(list);
        mDbManager.commitTransaction();
        Logger.v("Realm ", "Copied list to realm");
    } catch (Exception e) {
        Logger.e("Realm Something went wrong ", e);
    }

由于这个分页循环,我得到了错误:

java.lang.IllegalStateException: Nested transactions are not allowed. Use commitTransaction() after each beginTransaction().

我还尝试在每次提交后关闭数据库,但这没有帮助。

如何实现这种存储并解决嵌套事务?

或者任何人都可以为此提出更好的设计结构吗?

谢谢

4

4 回答 4

3

只需确保在捕获异常时通过以下方式关闭事务mDbManager.closetransaction

于 2016-05-17T11:10:24.710 回答
2

您可以使用它Realm.isInTransaction()来检查您是否有未结交易。

于 2015-12-15T13:54:20.133 回答
1

尽量避免这种情况:

 beginTransaction 
beginTransaction 

commitTransaction 
commitTransaction 

你应该做这样的事情:

beginTransaction 
commitTransaction

beginTransaction 
commitTransaction
于 2015-12-15T14:03:19.523 回答
0

我认为在您的代码尝试关闭它之前有 beginTransaction() 。

于 2015-12-15T12:25:39.650 回答