类 DynamicRealm
在此页面上
io.realm
DynamicRealm 是io.realm.Realm的动态变体。 这意味着对数据和/或查询的所有访问都是使用基于字符串的类名称而不是类类型引用来完成的。
这在迁移期间或处理基于字符串的数据(例如 CSV 或 XML 文件)时非常有用。
相同的io.realm.RealmConfiguration可用于在动态和类型化模式下打开 Realm 文件,但在同时打开类型化和动态版本的情况下修改模式是非常不鼓励的,因为这样很可能导致类型化 Realm 崩溃。 在迁移期间,只有一个 DynamicRealm 会打开。
动态 Realm 不强制执行模式或模式版本,并且即使已在 RealmConfiguration 中定义,也不会使用 RealmMigration 代码。
也就是说,在类型化模式下打开 Realm 之前,不会创建或验证模式。 如果首先以动态模式打开 Realm 文件,则该文件将不包含有关类和字段的任何信息,并且对模式定义的类的任何查询都将失败。
嵌套类摘要
修饰符和类型 | 类和描述 |
---|---|
public static interface | |
public abstract static |
方法摘要
修饰符和类型 | 方法和说明 |
---|---|
public void | 为 Realm 添加变更监听器。 |
public <any> | asFlowable () 返回一个监控此 Realm 变更的 RxJava Flowable。 |
实例化一个新的嵌入式对象并将其添加到 Realm 中。 | |
使用给定主键创建对象。 | |
实例化一个新对象并将其添加到 Realm 中。 | |
public void | |
public void | 在 DynamicRealm 上执行给定事务。 |
DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess, DynamicRealm.Transaction.OnError onError ) 与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess 和 OnError 回调。 | |
DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnError onError ) 与executeTransactionAsync(Transaction)类似,但也接受 OnError 回调。 | |
DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess ) 与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess回调。 | |
与executeTransaction(Transaction)类似,但在工作线程上异步运行。 | |
freeze () 返回当前 Realm 的冻结快照。 | |
公共静态DynamicRealm | Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例的动态变体。 |
public static RealmAsyncTask | 在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。 |
getSchema () 返回此 Realm 的可变模式。 | |
公共布尔值 | isEmpty () 检查此io.realm.Realm 是否包含任何对象。 |
public void | 删除所有用户定义的变更侦听器。 |
public void | 删除指定的变更侦听器。 |
继承方法
从类 java.lang.Object 继承的方法 :
getClass
、hashCode
、equals
、clone
、toString
、notify
、notifyAll
、wait
、wait
、wait
、finalize
从类io.realm.BaseRealm继承的方法:
setAutoRefresh
、isAutoRefresh
、refresh
、isInTransaction
、addListener
、removeListener
、asFlowable
、removeAllListeners
、writeCopyTo
、writeEncryptedCopyTo
、waitForChange
、stopWaitForChange
、beginTransaction
、commitTransaction
、cancelTransaction
、freeze
、isFrozen
、getNumberOfActiveVersions
、checkIfValid
、checkAllowQueriesOnUiThread
、checkAllowWritesOnUiThread
、checkIfInTransaction
、checkIfValidAndInTransaction
、getPath
、getConfiguration
、getVersion
、close
、isClosed
、isEmpty
、getSchema
、getSubscriptions
、deleteAll
、migrateRealm
、finalize
方法详细信息
addChangeListener
向 Realm 添加变更监听器。此线程或另一个线程提交变更时将执行监听器。 Realm 实例按线程进行缓存。 因此,请务必记住使用removeChangeListener(RealmChangeListener)或removeAllChangeListeners()再次删除侦听器。 否则可能会导致内存泄漏。 参数
抛出异常
|
asFlowable
public <any> asFlowable () | ||||||
---|---|---|---|---|---|---|
返回一个监控此 Realm 变更的 RxJava Flowable。 订阅时,它将发出当前状态。 随着 Realm 更新,项目将不断发出 - 从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Flowables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
如果希望
返回: 仅调用 覆盖
|
createEmbeddedObject
public DynamicRealmObject createEmbeddedObject ( ) |
---|
实例化一个新的嵌入式对象并将其添加到 Realm。此方法只应用于创建标记为嵌入式的类型的对象。 参数
返回: 新创建的嵌入式对象。 抛出异常
|
createObject
使用给定主键创建对象。 未定义主键的类必须改用createObject( string ) } 。 返回: 新对象。 所有字段都将具有其类型的默认值,但主键字段除外,它将具有提供的值。 抛出异常
|
删除
executeTransaction
在 DynamicRealm 上执行给定事务。 beginTransaction()和commitTransaction()将被自动调用。 如果在事务期间引发任何异常,将调用cancelTransaction()而不是commitTransaction() 。 从 UI 线程调用此方法会抛出RealmException 异常。 这样做可能会导致丢帧甚至 ANR。 我们建议从非用户界面线程中调用此方法,或改用executeTransactionAsync(Transaction) 。 参数
抛出异常
|
executeTransactionAsync
public RealmAsyncTask executeTransactionAsync ( DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess, DynamicRealm.Transaction.OnError onError ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess 和 OnError 回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
public RealmAsyncTask executeTransactionAsync ( DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnError onError ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnError 回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
public RealmAsyncTask executeTransactionAsync ( DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
与executeTransaction(Transaction)类似,但在工作线程上异步运行。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
冻结
public DynamicRealm freeze () |
---|
返回当前 Realm 的冻结快照。 可以从任何线程读取和查询此 Realm,而不会引发 IllegalStateException 。冻结的 Realm 有自己的生命周期,可以通过调用close()来关闭,但完全关闭生成冻结副本的 Realm 也会关闭冻结的 Realm。 可以照常查询冻结的数据,但尝试以任何方式更改数据或尝试注册任何侦听器都会引发 IllegalStateException 。 注意:保持大量不同版本的 Realm 活动可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 。 返回: 此 Realm 的冻结副本。 覆盖
|
getInstance
Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例的动态变体。 动态 Realms 不关心 schemaVersion 和模式,因此打开 DynamicRealm 永远不会 trigger 迁移。 返回: 配置定义的 DynamicRealm。 抛出异常
|
getInstanceAsync
public static RealmAsyncTask getInstanceAsync ( RealmConfiguration configuration, DynamicRealm.Callback callback ) |
---|
在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。 此方法将初始化工作放在背景线程中,并在初始化完成后将 Realm 实例异步传递给调用者线程。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
getSchema
public RealmSchema getSchema () |
---|
isEmpty
public boolean isEmpty () |
---|
删除所有变更监听器
public void removeAllChangeListeners () |
---|
removeChangeListener
删除指定的变更侦听器。 参数
抛出异常
|
WHERE
返回一个 RealmQuery,可用于查询提供的类。 参数
返回: RealmQuery,可用于查询所提供类型的特定对象。 抛出异常
|