每次查询/写入后都可以关闭Realm实例吗?

好奇地

我试图找出打开/关闭Realm实例的最佳方法是什么。我们在3个地方使用Realm-App,Activities和Worker线程。但是,从任何地方访问Realm的数据都可能很酷。因此,我们将所有Realm查询/写入都包装在一个数据层中。(从性能的角度来看)可以对每个查询执行以下操作(每次写入都类似)吗?

try (Realm realm = getRealm()) {
    return realm.copyFromRealm(realm.where(Task.class).isNull("name")
    .findAllSorted("createdAt", Sort.DESCENDING));
}

您如何在异步交易中做类似的事情?有更好的方法吗?(我们正在使用RxJava)。

谢谢!

编辑:从@ christian-melchior快速响应后,我们将使用以下形式:

try (Realm realm = getRealm()) {
    return realm.copyFromRealm(realm.where(Task.class).isNull("name")
    .findAllSortedAsync("createdAt", Sort.DESCENDING));
}

EDIT2:我们实际上已经解决了这一问题:

Realm realm = getRealm();
return realm.where(Task.class).isNull("name")
  .findAllSortedAsync("createdAt", Sort.DESCENDING)
  .asObservable()
  .filter(RealmResults::isLoaded)
  .first()
  .map(realmObjects -> {
      if (realmObjects.isEmpty()) {
          realm.close();
          return null;
      }
      List<Task> res = realm.copyFromRealm(realmObjects);
      realm.close();
      return res;
  });

因为我们希望onComplete在每个查询之后调用我们

克里斯蒂安·梅尔基奥(Christian Melchior)

使用copyFromRealm将为您提供所有数据的内存副本,因此,只要您不加载庞大的列表,它就可以正常工作。但是,您将使用更多的内存,并且始终在打开和关闭Realms方面有一些开销。

在这里可以看到一种控制Realm生命周期的想法:https : //realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances

还要注意,如果您担心在UI线程上加载数据,在许多情况下可以使用我们的异步API:https : //realm.io/docs/java/latest/#asynchronous-queries

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每次查询/写入后都可以关闭Realm实例吗?

来自分类Dev

每次都可以创建新的毕加索实例吗

来自分类Dev

每次生成实例时,FactoryGirl都可以设置变量吗?

来自分类Dev

自定义资源:每次都可以重新应用设置吗?

来自分类Dev

自定义资源:每次都可以重新应用设置吗?

来自分类Dev

Google Forms每次提交都可以是一个文件吗

来自分类Dev

每次都可以读取一定数量的文件吗?

来自分类Dev

任何人都可以提供REST API列表来查询elasticsearch吗?

来自分类Dev

每次在JList上单击都可以重新绘制JPanel

来自分类Dev

在PyCharm中,每次我保存文件时都可以执行“重新格式化代码”吗?

来自分类Dev

在PyCharm中,每次我保存文件时都可以执行“重新格式化代码”吗?

来自分类Dev

所有的NOT IN都可以转换为NOT EXISTS吗?

来自分类Dev

任何代码都可以触发批量替代操作吗?

来自分类Dev

每种功能语言都可以偷懒吗?

来自分类Dev

在PySpark PipelineModel的各个阶段都可以访问方法吗?

来自分类Dev

使bat文件到处都可以使用吗?

来自分类Dev

所有的NOT IN都可以转换为NOT EXISTS吗?

来自分类Dev

任何人都可以更正此代码吗?

来自分类Dev

任何人都可以处理吗?

来自分类Dev

什么是内联查询?任何人都可以用简洁明了的例子来定义吗?

来自分类Dev

当我们编辑(追加,删除...)列表时会发生什么,每次编辑列表时我们都可以执行操作吗?

来自分类Dev

执行完成后关闭Realm实例

来自分类Dev

为什么局部变量的地址每次都可以不同?

来自分类Dev

Navicat:进行查看,每次输入时都可以更新某些字段

来自分类Dev

pygame在砖块游戏中每次击中桨都可以提高速度

来自分类Dev

任何实例都可以访问(一个类的)所有实例

来自分类Dev

使用该站点的任何人都可以访问ASP.NET MVC网站中的全局值吗?或者它是每个会话的实例?

来自分类Dev

任何人都可以举一个监督学习和非监督学习的真实例子吗?

来自分类Dev

使用该站点的任何人都可以访问ASP.NET MVC网站中的全局值吗?还是为每个会话实例化该全局值?

Related 相关文章

  1. 1

    每次查询/写入后都可以关闭Realm实例吗?

  2. 2

    每次都可以创建新的毕加索实例吗

  3. 3

    每次生成实例时,FactoryGirl都可以设置变量吗?

  4. 4

    自定义资源:每次都可以重新应用设置吗?

  5. 5

    自定义资源:每次都可以重新应用设置吗?

  6. 6

    Google Forms每次提交都可以是一个文件吗

  7. 7

    每次都可以读取一定数量的文件吗?

  8. 8

    任何人都可以提供REST API列表来查询elasticsearch吗?

  9. 9

    每次在JList上单击都可以重新绘制JPanel

  10. 10

    在PyCharm中,每次我保存文件时都可以执行“重新格式化代码”吗?

  11. 11

    在PyCharm中,每次我保存文件时都可以执行“重新格式化代码”吗?

  12. 12

    所有的NOT IN都可以转换为NOT EXISTS吗?

  13. 13

    任何代码都可以触发批量替代操作吗?

  14. 14

    每种功能语言都可以偷懒吗?

  15. 15

    在PySpark PipelineModel的各个阶段都可以访问方法吗?

  16. 16

    使bat文件到处都可以使用吗?

  17. 17

    所有的NOT IN都可以转换为NOT EXISTS吗?

  18. 18

    任何人都可以更正此代码吗?

  19. 19

    任何人都可以处理吗?

  20. 20

    什么是内联查询?任何人都可以用简洁明了的例子来定义吗?

  21. 21

    当我们编辑(追加,删除...)列表时会发生什么,每次编辑列表时我们都可以执行操作吗?

  22. 22

    执行完成后关闭Realm实例

  23. 23

    为什么局部变量的地址每次都可以不同?

  24. 24

    Navicat:进行查看,每次输入时都可以更新某些字段

  25. 25

    pygame在砖块游戏中每次击中桨都可以提高速度

  26. 26

    任何实例都可以访问(一个类的)所有实例

  27. 27

    使用该站点的任何人都可以访问ASP.NET MVC网站中的全局值吗?或者它是每个会话的实例?

  28. 28

    任何人都可以举一个监督学习和非监督学习的真实例子吗?

  29. 29

    使用该站点的任何人都可以访问ASP.NET MVC网站中的全局值吗?还是为每个会话实例化该全局值?

热门标签

归档