Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ / /

类 DynamicRealm

在此页面上

  • io.realm
  • 嵌套类摘要
  • 方法摘要
  • 继承方法
  • 方法详细信息
  • addChangeListener
  • asFlowable
  • createEmbeddedObject
  • createObject
  • 删除
  • executeTransaction
  • executeTransactionAsync
  • 冻结
  • getInstance
  • getInstanceAsync
  • getSchema
  • isEmpty
  • 删除所有变更监听器
  • removeChangeListener
  • WHERE
java.lang.Object
io.realm.BaseRealm
io.realm.DynamicRealm

DynamicRealm 是io.realm.Realm的动态变体。 这意味着对数据和/或查询的所有访问都是使用基于字符串的类名称而不是类类型引用来完成的。

这在迁移期间或处理基于字符串的数据(例如 CSV 或 XML 文件)时非常有用。

相同的io.realm.RealmConfiguration可用于在动态和类型化模式下打开 Realm 文件,但在同时打开类型化和动态版本的情况下修改模式是非常不鼓励的,因为这样很可能导致类型化 Realm 崩溃。 在迁移期间,只有一个 DynamicRealm 会打开。

动态 Realm 不强制执行模式或模式版本,并且即使已在 RealmConfiguration 中定义,也不会使用 RealmMigration 代码。

也就是说,在类型化模式下打开 Realm 之前,不会创建或验证模式。 如果首先以动态模式打开 Realm 文件,则该文件将不包含有关类和字段的任何信息,并且对模式定义的类的任何查询都将失败。

提示

另请参阅:

  • Realm

  • Realm 模式

修饰符和类型
类和描述
public static interface
public abstract static
修饰符和类型
方法和说明
public void

为 Realm 添加变更监听器。

public <any>

返回一个监控此 Realm 变更的 RxJava Flowable。

String className,
DynamicRealmObject parentObject,
String parentProperty
)

实例化一个新的嵌入式对象并将其添加到 Realm 中。

String className,
Object primaryKeyValue
)

使用给定主键创建对象。

String className
)

实例化一个新对象并将其添加到 Realm 中。

public void
String className
)

从 Realm 中删除指定类的所有对象。

public void

在 DynamicRealm 上执行给定事务。

executeTransaction(Transaction)类似,但在工作线程上异步运行。

返回当前 Realm 的冻结快照。

公共静态DynamicRealm

Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例的动态变体。

public static RealmAsyncTask

在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。

返回此 Realm 的可变模式。

公共布尔值

检查此io.realm.Realm 是否包含任何对象。

public void

删除所有用户定义的变更侦听器。

public void
String className
)

返回一个 RealmQuery,可用于查询提供的类。

  • 从类 java.lang.Object 继承的方法 :getClasshashCodeequalsclonetoStringnotifynotifyAllwaitwaitwaitfinalize

  • 从类io.realm.BaseRealm继承的方法: setAutoRefreshisAutoRefreshrefreshisInTransactionaddListenerremoveListenerasFlowableremoveAllListenerswriteCopyTowriteEncryptedCopyTowaitForChangestopWaitForChangebeginTransactioncommitTransactioncancelTransactionfreezeisFrozengetNumberOfActiveVersionscheckIfValidcheckAllowQueriesOnUiThreadcheckAllowWritesOnUiThreadcheckIfInTransactioncheckIfValidAndInTransactiongetPathgetConfigurationgetVersioncloseisClosedisEmptygetSchemagetSubscriptionsdeleteAllmigrateRealmfinalize

向 Realm 添加变更监听器。此线程或另一个线程提交变更时将执行监听器。

Realm 实例按线程进行缓存。 因此,请务必记住使用removeChangeListener(RealmChangeListener)removeAllChangeListeners()再次删除侦听器。 否则可能会导致内存泄漏。

参数

  • listener — 变更侦听器。

抛出异常

public <any> asFlowable ()

返回一个监控此 Realm 变更的 RxJava Flowable。 订阅时,它将发出当前状态。 随着 Realm 更新,项目将不断发出 - onComplete将永远不会被调用。

从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。

Realm Flowables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:

realm.asFlowable()
.observeOn(Schedulers.computation())
.map(rxRealm -> doExpensiveWork(rxRealm))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

如果希望asFlowable()停止发出项目,可以使用first()操作符指示 RxJava 仅发出第一项:

realm.asFlowable().first().subscribe( ... ); // You only get the results once

返回:

仅调用onNext的 RxJava Observable。 它永远不会调用onCompleteOnError

覆盖

asFlowableBaseRealm类中

String className,
DynamicRealmObject parentObject,
String parentProperty
)

实例化一个新的嵌入式对象并将其添加到 Realm。此方法只应用于创建标记为嵌入式的类型的对象。

参数

  • className - 要创建的对象的类名。

  • parentObject - 应包含对嵌入式对象的引用的父对象。 如果父属性是列表,则嵌入式对象将被添加到该列表的末尾。

  • parentProperty - 父类中保存引用的属性。

返回:

新创建的嵌入式对象。

抛出异常

  • IllegalArgumentException - 如果clazz 不是嵌入式类,或者父类中的属性无法保存适当类型的对象。

提示

另请参阅:

String className,
Object primaryKeyValue
)

使用给定主键创建对象。 未定义主键的类必须改用createObject( string ) } 。

返回:

新对象。 所有字段都将具有其类型的默认值,但主键字段除外,它将具有提供的值。

抛出异常

实例化一个新对象并将其添加到 Realm 中。

参数

  • className - 要创建的对象的类名。

返回:

新对象。

抛出异常

public void delete (
String className
)

从 Realm 中删除指定类的所有对象。

参数

  • className - 应删除所有对象的类。

抛出异常

在 DynamicRealm 上执行给定事务。 beginTransaction()commitTransaction()将被自动调用。 如果在事务期间引发任何异常,将调用cancelTransaction()而不是commitTransaction()

从 UI 线程调用此方法会抛出RealmException 异常。 这样做可能会导致丢帧甚至 ANR。 我们建议从非用户界面线程中调用此方法,或改用executeTransactionAsync(Transaction)

参数

  • transaction - 要执行的事务

抛出异常

executeTransactionAsync(Transaction)类似,但也接受 OnSuccess 和 OnError 回调。

参数

  • transaction - 要执行的事务

  • onSuccess — 事务成功时调用的回调。

  • onError — 事务失败时调用的回调。

返回:

代表可取消任务的RealmAsyncTask

抛出异常

executeTransactionAsync(Transaction)类似,但也接受 OnError 回调。

参数

  • transaction - 要执行的事务

  • onError — 事务失败时调用的回调。

返回:

代表可取消任务的RealmAsyncTask

抛出异常

executeTransactionAsync(Transaction)类似,但也接受 OnSuccess回调。

参数

  • transaction - 要执行的事务

  • onSuccess — 事务成功时调用的回调。

返回:

代表可取消任务的RealmAsyncTask

抛出异常

executeTransaction(Transaction)类似,但在工作线程上异步运行。

参数

  • transaction - 要执行的事务

返回:

代表可取消任务的RealmAsyncTask

抛出异常

返回当前 Realm 的冻结快照。 可以从任何线程读取和查询此 Realm,而不会引发 IllegalStateException 。冻结的 Realm 有自己的生命周期,可以通过调用close()来关闭,但完全关闭生成冻结副本的 Realm 也会关闭冻结的 Realm。

可以照常查询冻结的数据,但尝试以任何方式更改数据或尝试注册任何侦听器都会引发 IllegalStateException

注意:保持大量不同版本的 Realm 活动可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置RealmConfiguration.Builder.maxNumberOfActiveVersions(long)

返回:

此 Realm 的冻结副本。

覆盖

freezeBaseRealm类中

public static DynamicRealm getInstance (
RealmConfiguration configuration
)

Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例的动态变体。 动态 Realms 不关心 schemaVersion 和模式,因此打开 DynamicRealm 永远不会 trigger 迁移。

返回:

配置定义的 DynamicRealm。

抛出异常

在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。 此方法将初始化工作放在背景线程中,并在初始化完成后将 Realm 实例异步传递给调用者线程。

参数

  • configuration - 用于打开 Realm 的RealmConfiguration

  • callback — 调用以返回结果。

返回:

代表可取消任务的RealmAsyncTask

抛出异常

返回此 Realm 的可变模式。

返回:

此 Realm 的RealmSchema

覆盖

getSchemaBaseRealm类中

public boolean isEmpty ()

检查此io.realm.Realm 是否包含任何对象。

返回:

true 如果为空,则为 @{code false} 否则。

覆盖

isEmptyBaseRealm类中

删除所有用户定义的变更侦听器。

抛出异常

提示

另请参阅:

删除指定的变更侦听器。

参数

  • listener - 要删除的变更侦听器。

抛出异常

提示

另请参阅:

public RealmQuery where (
String className
)

返回一个 RealmQuery,可用于查询提供的类。

参数

  • className - 要查询的对象的类。

返回:

RealmQuery,可用于查询所提供类型的特定对象。

抛出异常

提示

另请参阅:

后退

DefaultCompactOnLaunchCallback