类 RealmObject
在此页面上
io.realm
实现的接口:
在 Realm 中,您可以通过子类化 RealmObject 并添加要持久化的字段来定义 RealmObject 类。 然后,您在 Realm 中创建对象,并使用自定义子类,而不是直接使用 RealmObject 类。注解处理器将为您的 RealmObject 子类创建代理类。
支持以下字段数据类型:
boolean/Boolean
短/短
int/Integer
long/Long
float/Float
double/Double
字节[]
字符串
Date
UUID
org.bson.types.Decimal128
org.bson.types.ObjectId
任何 RealmObject 子类
RealmList
RealmDictionary
当存储在 Realm 中时,类型 short
、 int
和long
会映射到long
。
RealmObject 的唯一限制是字段不能为 final 或 易失性。 允许使用任何方法和公共字段。 提供自定义构造函数时,必须声明一个不带参数的公共构造函数。
使用io.realm.annotations.Ignore注解的字段没有这些限制,也不需要 getter 或 setter。
Realm 将为使用io.realm.annotations.Index注解的字段创建索引。 这会加快查询速度,但会对插入和更新产生负面影响。
RealmObject 不能在不同线程之间传递。
构造函数
构造函数和描述 |
---|
RealmObject () |
方法摘要
修饰符和类型 | 方法和说明 |
---|---|
public static void | 向 RealmObject 添加变更侦听器,如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发该变更侦听器。 |
public static void | 向 RealmObject 添加变更侦听器以获取有关变更的详细信息。 |
public final void | 在此 RealmObject 中添加一个变更侦听器,如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发该变更侦听器。 |
public final void | 向此 RealmObject 添加变更侦听器,以获取有关变更的详细信息。 |
public static <any> | 返回一个 Rx Observable,用于监控此 RealmObject 的变更。 |
public final <any> | asChangesetObservable <E >() 返回一个 Rx Observable,用于监控此 RealmObject 的变更。 |
public static <any> | 返回一个监控此 RealmObject 变更的 RxJava Flowable。 |
public final <any> | asFlowable <E >() 返回一个监控此 RealmObject 变更的 RxJava Flowable。 |
public static void | 从当前关联的 Realm 中删除对象。 |
public final void | 从当前关联的 Realm 中删除对象。 |
public static E | 返回此对象的冻结快照。 |
public final E | freeze <E >() 返回此对象的冻结快照。 |
public static Realm | 返回 |
公共Realm | getRealm () 返回此 RealmObject 所属的 Realm 实例。 |
public static boolean | 返回此 RealmObject 是否被冻结。 |
public final boolean | isFrozen () 返回此 RealmObject 是否被冻结。 |
public static boolean | 检查用于查找此 RealmObject 的查询是否已完成。 |
public final boolean | isLoaded () 检查用于查找此 RealmObject 的查询是否已完成。 |
public static boolean | 检查此对象是否由 Realm 托管。 |
公共布尔值 | isManaged () 检查此对象是否由 Realm 托管。 |
public static boolean | 检查 RealmObject 是否仍可有效使用,即 RealmObject 未被删除, io.realm.Realm 未被关闭。 |
public final boolean | isValid () 检查 RealmObject 是否仍可有效使用,即 RealmObject 未被删除, io.realm.Realm 未被关闭。 |
public static boolean | 使异步查询阻塞。 |
public final boolean | load () 使异步查询阻塞。 |
public static void | 从给定 RealmObject 中删除所有已注册的侦听器。 |
public final void | 删除所有已注册的侦听器。 |
public static void | 删除先前在给定 RealmObject 上注册的侦听器。 |
public static void | 删除先前在给定 RealmObject 上注册的侦听器。 |
public final void | 删除以前注册的侦听器。 |
public final void | 删除以前注册的侦听器。 |
继承方法
从类 java.lang.Object 继承的方法 :
getClass
、hashCode
、equals
、clone
、toString
、notify
、notifyAll
、wait
、wait
、wait
、finalize
构造函数详细信息
public RealmObject () |
---|
方法详细信息
addChangeListener
向 RealmObject 添加变更侦听器,如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发该变更侦听器。注册变更侦听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
参数
抛出异常
|
向 RealmObject 添加变更侦听器以获取有关变更的详细信息。 如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发监听器。注册变更监听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
参数
抛出异常
|
在此 RealmObject 中添加变更侦听器,如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发该侦听器。注册变更侦听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
参数
抛出异常
|
向此 RealmObject 添加变更侦听器,以获取有关变更的详细信息。 如果任何值字段或引用的 RealmObject 字段发生更改,或者 RealmList 字段本身发生更改,则会触发监听器。注册变更监听器不会阻止底层 RealmObject 被垃圾收集。 如果对 RealmObject 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。
参数
抛出异常
|
asChangesetObservable
返回一个 Rx Observable,用于监控此 RealmObject 的变更。 订阅时,它将发出当前 RealmObject。 每次更新 RealmObject 时,都会发送由 RealmObject 和ObjectChangeSet组成的对。 首次发出 RealmObject 时,变更集将为 RealmObject 在更新时会不断发出 - 从 Realm Observables 发出的项目被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Observables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
参数
返回: 仅调用 抛出异常
|
public final <any> asChangesetObservable <E >() | |||||
---|---|---|---|---|---|
返回一个 Rx Observable,用于监控此 RealmObject 的变更。 订阅时,它将发出当前 RealmObject。 每次更新 RealmObject 时,都会发送由 RealmObject 和ObjectChangeSet组成的对。 首次发出 RealmObject 时,变更集将为 RealmObject 在更新时会不断发出 - 从 Realm Observables 发出的项目被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Observables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
返回: 仅调用 抛出异常
|
asFlowable
返回一个监控此 RealmObject 变更的 RxJava Flowable。 订阅时,它将发出当前对象。 更新 RealmObject 时将不断发出对象更新 — 永远不会调用 链接 RealmObject 可观察量时,请使用 从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Flowables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
如果希望
参数
返回: 仅调用 抛出异常
|
public final <any> asFlowable <E >() | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回一个监控此 RealmObject 变更的 RxJava Flowable。 订阅时,它将发出当前对象。 更新 RealmObject 时将不断发出对象更新 — 永远不会调用 链接 RealmObject flowable 时,请使用 从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Flowables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
如果希望
类型参数
返回: 仅调用 抛出异常
|
deleteFromRealm
从当前与之关联的 Realm 中删除对象。调用此方法后,该对象将无效,对其执行的任何操作(读取或写入)都将失败,并抛出 IllegalStateException。 抛出异常
|
public final void deleteFromRealm () |
---|
从当前关联的 Realm 中删除对象。调用此方法后,该对象将无效,对其执行的任何操作(读取或写入)都将失败,并抛出 IllegalStateException。 抛出异常
|
冻结
返回此对象的冻结快照。 可以从任何线程读取和查询冻结的副本,而不会引发 IllegalStateException 。 冻结 RealmObject 还会创建一个具有自己的生命周期的冻结 Realm,但如果生成原始collection的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和对象也将关闭。 可以照常查询冻结对象,但尝试以任何方式对其进行更改或尝试注册侦听器都会引发 IllegalStateException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 。 返回: 此对象的冻结副本。 抛出异常
|
public final E freeze <E >() |
---|
返回此对象的冻结快照。 可以从任何线程读取和查询冻结的副本,而不会引发 IllegalStateException 。 冻结 RealmObject 还会创建一个具有自己的生命周期的冻结 Realm,但如果生成原始collection的活动 Realm 完全关闭(即 所有线程上的所有实例均已关闭),冻结的 Realm 和对象也将关闭。 可以照常查询冻结对象,但尝试以任何方式对其进行更改或尝试注册侦听器都会引发 IllegalStateException 。 注意:让大量不同版本的冻结对象保持活动状态可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 。 返回: 此对象的冻结副本。 抛出异常
|
getRealm
返回 不得调用Realm.close() 针对返回的实例。 参数
返回:
抛出异常
|
返回此 RealmObject 所属的 Realm 实例。 不得调用Realm.close() 针对返回的实例。 返回: 此对象所属的Realm实例,如果此对象为非托管对象,则为 抛出异常
|
IsFrozen
isLoaded
检查用于查找此 RealmObject 的查询是否已完成。RealmQuery.findFirstAsync()等异步方法会返回一个表示RealmQuery未来结果的RealmObject 。 它可以被认为类似于 java.util.concurrent.Future 在这方面。 一旦 “Null”对象表示
根据定义,同步 RealmObject 是阻塞的,因此此方法将始终为其返回 参数
返回:
|
public final boolean isLoaded () | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
检查用于查找此 RealmObject 的查询是否已完成。RealmQuery.findFirstAsync()等异步方法会返回一个表示RealmQuery未来结果的RealmObject 。 它可以被认为类似于 java.util.concurrent.Future 在这方面。 一旦 “Null”对象表示
根据定义,同步 RealmObject 是阻塞的,因此此方法将始终为其返回 返回:
|
isManaged
检查此对象是否由 Realm 托管。 托管对象只是底层 Realm 文件中数据的包装器。 在 Looper 线程上,托管对象将实时更新,因此它始终指向最新数据。 可以使用addChangeListener(RealmModel, RealmChangeListener)注册变更监听器,以便在发生更改时收到通知。 托管对象具有线程限制,因此除了创建它们的线程之外,其他线程无法访问它们。 如果此方法返回 可以使用Realm.copyToRealm(RealmModel, ImportFlag...)从非托管对象创建托管对象。 可以使用Realm.copyFromRealm(RealmModel)从托管对象创建非托管对象。 返回:
|
public boolean isManaged () |
---|
检查此对象是否由Realm托管。 托管对象只是根本的Realm 文件中数据的包装器。 在 Looper 线程上,托管对象将实时更新,因此它始终指向最新数据。 可以使用addChangeListener(RealmChangeListener)注册变更监听器,以便在发生更改时收到通知。 托管对象具有线程限制,因此除了创建它们的线程之外,其他线程无法访问它们。 如果此方法返回 可以使用Realm.copyToRealm(RealmModel, ImportFlag...)从非托管对象创建托管对象。 可以使用Realm.copyFromRealm(RealmModel)从托管对象创建非托管对象。 返回:
|
isValid
检查 RealmObject 是否仍可有效使用,即 RealmObject 未被删除, io.realm.Realm 未被关闭。 对于非托管对象,它将始终返回 参数
返回:
|
public final boolean isValid () | |||
---|---|---|---|
检查 RealmObject 是否仍可有效使用,即 RealmObject 未被删除, io.realm.Realm 未被关闭。 对于非托管对象,它将始终返回 请注意,这可用于检查某些条件的有效性,例如在满足条件时是否为
返回:
|
负载
使异步查询阻塞。 这也会trigger所有已注册的侦听器。注意: 如果针对非托管对象(在 Realm 外部创建)调用,将返回 参数
返回:
|
public final boolean load () |
---|
使异步查询阻塞。 这也会trigger所有已注册的侦听器。注意: 如果针对非托管对象(在 Realm 外部创建)调用,将返回 返回:
|
删除所有变更监听器
从给定 RealmObject 中删除所有已注册的侦听器。 参数
抛出异常
|
public final void removeAllChangeListeners () |
---|
删除所有已注册的侦听器。 |
removeChangeListener
删除先前在给定 RealmObject 上注册的侦听器。 参数
抛出异常
|
删除先前在给定 RealmObject 上注册的侦听器。 参数
抛出异常
|
删除以前注册的侦听器。 参数
抛出异常
|
删除以前注册的侦听器。 参数
抛出异常
|