【问题标题】:Resolving nested transactions when using realm and pagination使用领域和分页时解决嵌套事务
【发布时间】:2015-12-15 12:22:12
【问题描述】:

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

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

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

领域代码:

    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().

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

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

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

谢谢

【问题讨论】:

    标签: android database pagination realm realm-list


    【解决方案1】:

    只需确保在捕获异常时,通过mDbManager.closetransaction 关闭事务

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        尽量避免:

         beginTransaction 
        beginTransaction 
        
        commitTransaction 
        commitTransaction 
        

        你应该这样做:

        beginTransaction 
        commitTransaction
        
        beginTransaction 
        commitTransaction
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 对不起,我很困惑,所以如果我想存储一个新对象,我不应该开始事务?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-24
          • 2018-05-14
          • 2019-08-23
          • 1970-01-01
          • 2020-04-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多