gpt4 book ai didi

android - Realm Android : what is mean by isValid(), isLoaded(), isManaged()?

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:46 27 4
gpt4 key购买 nike

Realm 中,有 isValid()isLoaded()isManaged() 三个方法。我想知道什么时候应该使用哪种方法?

最佳答案

有效

public final boolean isValid()

检查 RealmObject 是否仍然可以使用,即 RealmObject 没有被删除,Realm 也没有被关闭。对于非托管对象,它将始终返回 true。

有两件事会使 RealmObject 无效:

- 关闭它所属的 Realm 实例 并删除任何线程上的对象(如果您正在进行自动更新 活套线)

已加载

public final boolean isLoaded()

检查用于查找此 RealmObject 的查询是否已完成。像 RealmQuery.findFirstAsync() 这样的异步方法返回一个代表 RealmQuery future 结果的 RealmObject。在这方面,它可以被认为类似于 Future。

一旦 isLoaded() 返回 true,即使查询没有找到任何与查询参数匹配的对象,该对象也代表查询结果。在这种情况下,RealmObject 将成为“空”对象。

isManaged

public static boolean isManaged(E 对象)

检查此对象是否由 Realm 管理。托管对象只是底层 Realm 文件中数据的包装器。在 Looper 线程上,托管对象将实时更新,因此它始终指向最新数据。可以使用 addChangeListener(RealmModel, RealmChangeListener) 注册一个变化监听器,以便在发生变化时得到通知。托管对象是线程限制的,因此除了创建它们的线程外,其他线程无法访问它们。

Realm 对象的实例可以是托管的或非托管的。托管对象持久存在于 Realm 中,始终是最新的并且线程受限。它们通常比非托管版本更轻量级,因为它们在 Java 堆上占用的空间更少。非托管对象就像普通的 Java 对象一样,它们不会被持久化,也不会自动更新。它们可以跨线程自由移动。

更多信息请引用:https://realm.io/docs/java/4.3.3/api/io/realm/RealmObject.html

关于android - Realm Android : what is mean by isValid(), isLoaded(), isManaged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50265471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com