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

类 Realm

在此页面上

  • io.realm
  • 嵌套类摘要
  • 字段摘要
  • 方法摘要
  • 继承方法
  • 字段详细信息
  • DEFAULT_REALM_NAME
  • ENCRYPTION_KEY_LENGTH
  • 方法详细信息
  • addChangeListener
  • asFlowable
  • compactRealm
  • copyFromRealm
  • copyToRealm
  • copyToRealmOrUpdate
  • createAllFromJson
  • createEmbeddedObject
  • createObject
  • createObjectFromJson
  • createOrUpdateAllFromJson
  • createOrUpdateObjectFromJson
  • 删除
  • deleteRealm
  • executeTransaction
  • executeTransactionAsync
  • 冻结
  • getApplicationContext
  • getDefaultConfiguration
  • getDefaultInstance
  • getDefaultModule
  • getGlobalInstanceCount
  • getInstance
  • getInstanceAsync
  • getLocalInstanceCount
  • getSchema
  • init
  • insert
  • insertOrUpdate
  • isEmpty
  • migrateRealm
  • 删除所有变更监听器
  • removeChangeListener
  • removeDefaultConfiguration
  • setDefaultConfiguration
  • WHERE
java.lang.Object
io.realm.BaseRealm
io.realm.Realm

Realm 类是对象持久存储的存储和事务管理器。 它负责创建 RealmObject 的实例。 Realm 中的对象可以随时查询和读取。 创建、修改和删除对象必须在事务内部完成。 请参阅executeTransaction(Transaction)

事务确保多个实例(在多个线程上)可以访问处于一致状态的相同对象,并具有完整的 ACID 保证。

请务必记住在使用 Realm 实例后调用close()方法。 否则可能会导致 java.lang.OutOfMemoryError 因为无法释放原生资源。

Realm实例不能跨不同线程使用。 这意味着您必须在要使用Realm的每个线程上打开一个实例。 Realm实例使用引用计数按线程自动缓存,因此只要引用计数未达到零,调用getInstance(RealmConfiguration)将仅返回缓存的Realm ,并且应被视为轻量级操作。

对于用户界面线程,这意味着打开和关闭Realms应发生在onCreate/onDestroy或onStart/onStop中。

Realm 实例使用 android.os.Handler 跨线程协调其状态 机制。这也意味着没有 android.os.Looper 的线程上的 Realm 实例 除非手动调用 refresh() ,否则无法接收更新。

在 Android 活动中使用 Realm 的标准模式如下所示:

public class RealmApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// The Realm file will be located in package's "files" directory.
RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
Realm.setDefaultConfiguration(realmConfig);
}
}
public class RealmActivity extends Activity {
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
realm = Realm.getDefaultInstance();
}
@Override
protected void onDestroy() {
super.onDestroy();
realm.close();
}
}

Realm 支持最大包含 16 MB 的字符串和字节字段。

提示

另请参阅:

  • ACID

  • 使用 Realm 的示例

修饰符和类型
类和描述
public static interface
public abstract static
修饰符和类型
字段和描述
public static final String
public static final int

ENCRYPTION_KEY_LENGTH

用于加密 Realm 数据的加密密钥所需的长度。

修饰符和类型
方法和说明
public void

为 Realm 添加变更监听器。

public <any>

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

public static boolean

压缩 Realm 文件。

公用E
E realmObject,
int maxDepth
)

为已持久化的RealmObject 创建非托管内存中副本。

公用E
E realmObject
)

为已持久化的RealmObject 创建非托管内存中副本。

公共 列表
java.lang.Iterable<E> realmObjects,
int maxDepth
)

为已持久化的 RealmObject 创建非托管内存中副本。

公共 列表

为已持久化的 RealmObject 创建非托管内存中副本。

公共 列表

将 RealmObject collection复制到 Realm 实例并返回其副本。

公用E
E object,
)

将 RealmObject 复制到 Realm 实例并返回副本。

公共 列表

更新由io.realm.annotations.PrimaryKey标识的现有 RealmObject 列表;如果找不到现有对象,则创建新副本。

公用E

更新由同一io.realm.annotations.PrimaryKey标识的现有 RealmObject,如果找不到现有对象,则创建新副本。

public void
JSONArray json
)

为 JSON 数组中的每个对象创建一个 Realm 对象。

公用E
RealmModel parentObject,
String parentProperty
)

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

公用E
Object primaryKeyValue
)

实例化一个新对象并将其添加到已设置主键值的 Realm 中。

公用E

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

公用E
JSONObject json
)

创建一个预填充 JSON 对象数据的 Realm 对象。

public void

尝试使用新的 JSON 数据更新由其主键标识的现有对象的列表。

公用E

尝试使用新的 JSON 数据更新由主键定义的现有对象。

public void

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

public static boolean

从文件系统中删除 Realm 文件以及由给定RealmConfiguration指定的相关临时文件。

public void

在 Realm 上执行给定事务。

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

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

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

公共Realm

返回当前 Realm 的冻结快照。

public static Context

获取使用Realm Realm.init(Context)Realm .init(Context,string ) 初始化 时使用的应用程序上下文。

public static RealmConfiguration
public static Realm

Realm 静态构造函数,返回由 setDefaultConfiguration(RealmConfiguration) 设置的 io.realm.RealmConfiguration 定义的 Realm 实例

返回默认 Realm 模块。

public static int

返回当前进程中使用此配置的所有线程中当前打开的 Realm 实例数。

public static Realm

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

public static RealmAsyncTask

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

public static int

返回调用此方法的线程上当前打开的 Realm 实例数。

返回此 Realm 的模式。

public static synchronized void
Context context,
String userAgent
)

初始化 Realm 库并创建可供使用的默认配置。

public static synchronized void
Context context
)

初始化 Realm 库并创建可供使用的默认配置。

public void

插入非托管 RealmObject。

public void

插入非托管 RealmObject 的列表。

public void

插入或更新非托管 RealmObject。

public void

插入或更新非托管 RealmObject 列表。

公共布尔值

检查此io. 域。 Realm包含任何对象。

public static void

手动Atlas Triggers RealmMigration 上的迁移。

public static void

手动Atlas Triggers与给定 RealmConfiguration 关联的迁移。

public void

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

public void

删除指定的变更侦听器。

public static void

删除当前默认配置(如有)。

public static void

返回类型化 RealmQuery,可用于查询该类型的特定对象

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

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

用于加密 Realm 数据的加密密钥所需的长度。

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

Realm 实例是按线程单例运行并进行缓存的,因此即使调用close() ,也应手动删除监听器。 否则存在内存泄漏的风险。

参数

  • 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类中

public static boolean compactRealm (
RealmConfiguration configuration
)

压缩 Realm 文件。 Realm 文件通常包含可用/未使用的空间。 此方法会删除此可用空间,从而减小文件大小。 Realm 文件中的对象保持不变。在调用此方法之前,必须关闭文件,否则将返回false

The file system should have free space for at least a copy of the Realm file.
The Realm file is left untouched if any file operation fails.

参数

返回:

true 如果成功,如果任何文件操作失败,则为false

public E copyFromRealm <E >(
E realmObject,
int maxDepth
)

为已持久化的RealmObject 创建非托管内存中副本。 这是深度复制,可将所有引用的对象复制到定义的深度。

复制的对象均已与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。

*警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回Realm ,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,即使它们可能由于到达null 而处于maxDepth 状态。这也可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。

类型参数

  • E - 对象类型。

参数

  • realmObject — 要复制的RealmObject

  • maxDepth - 深层复制的限制。 此深度之后的所有引用都将为null 。 起始深度为0

返回:

托管RealmObject的内存中分离副本。

抛出异常

public E copyFromRealm <E >(
E realmObject
)

为已持久化的RealmObject 创建非托管内存中副本。 这是一个深度复制,将复制所有引用的对象。

复制的对象均已与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。

*警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回 Realm,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,并且可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。

类型参数

  • E - 对象类型。

参数

返回:

托管RealmObject的内存中分离副本。

抛出异常

public List copyFromRealm <E >(
java.lang.Iterable<E> realmObjects,
int maxDepth
)

为已持久化的 RealmObject 创建非托管内存中副本。 这是一个深度复制,会将所有引用的对象复制到定义的深度。复制的对象全部与 Realm 分离,并且不会再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。

*警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(Iterable, ImportFlag...)合并回Realm ,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,即使它们可能由于到达null 而处于maxDepth 状态。这也可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。

类型参数

  • E - 对象类型。

参数

  • realmObjects — 要复制的 RealmObject。

  • maxDepth - 深层复制的限制。 此深度之后的所有引用都将为null 。 起始深度为0

返回:

RealmObjects 的内存中分离副本。

抛出异常

public List copyFromRealm <E >(
)

为已持久化的 RealmObject 创建非托管内存中副本。 这是一个深度复制,将复制所有引用的对象。复制的对象均会与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。

*警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回 Realm,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,并且可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。

类型参数

  • E - 对象类型。

参数

  • realmObjects — 要复制的 RealmObject。

返回:

托管 RealmObjects 的内存中分离副本。

抛出异常

将 RealmObject collection复制到 Realm 实例并返回其copy。对原始 RealmObject 的任何进一步更改都不会反映在 Realm 副本中。 这是深度复制,即所有引用的对象都将被复制。 已在此 Realm 中的对象将被忽略。请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。

参数

  • objects - 要复制到 Realm 的 RealmObject。

  • flags - 修改将数据插入到 Realm 的行为的任何标志。

返回:

转换后的 RealmObject 列表,所有这些对象的属性均由 Realm 托管。

抛出异常

public E copyToRealm <E >(
E object,
)

将 RealmObject 复制到 Realm 实例并返回副本。 对原始 RealmObject 的任何进一步更改都不会反映在 Realm 副本中。 这是一个深复制,因此所有引用的对象都将被复制。 已在此 Realm 中的对象将被忽略。请注意,复制对象将复制所有字段值。 如果未提供,则此对象和子对象中任何未设置的字段都将设置为其默认值。

参数

  • object - 要复制到 Realm 的io.realm.RealmObject

  • flags - 修改将数据插入到 Realm 的行为的任何标志。

返回:

一个托管 RealmObject,其属性由 Realm 支持。

抛出异常

更新由io.realm.annotations.PrimaryKey标识的现有 RealmObject 列表;如果找不到现有对象,则创建新副本。 这是深度复制或更新,即所有引用的对象都将被复制或更新。

请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。

参数

  • objects - 要更新或复制到 Realm 中的对象列表。

  • flags - 修改将数据插入到 Realm 的行为的任何标志。

返回:

所有新的或更新的 RealmObject 的列表。

抛出异常

public E copyToRealmOrUpdate <E >(
E object,
)

更新由同一io.realm.annotations.PrimaryKey标识的现有 RealmObject,如果找不到现有对象,则创建新副本。 这是深度复制或更新,即所有引用的对象都将被复制或更新。

请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。

参数

  • object - 要复制或更新的io.realm.RealmObject

  • flags - 修改将数据插入到 Realm 的行为的任何标志。

返回:

新的或更新的 RealmObject 及其由 Realm 支持的所有属性。

抛出异常

public void createAllFromJson <E >(
JSONArray json
)

为 JSON 数组中的每个对象创建一个 Realm 对象。 这必须在事务中完成。具有未知属性的 JSON 属性将被忽略。 如果 JSON 对象中不存在RealmObject字段,则RealmObject字段将设置为该类型的默认值。

此方法目前不支持值列表字段。

参数

  • clazz — 要创建的 Realm 对象的类型。

  • json - 一个数组,其中每个 JSONObject 都必须映射到指定的类。

抛出异常

提示

另请参阅:

public E createEmbeddedObject <E >(
RealmModel parentObject,
String parentProperty
)

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

参数

  • clazz — 要创建的对象的类。 它必须标有@RealmClass(embedded = true)

  • parentObject - 应包含对嵌入式对象的引用的父对象。

  • parentProperty - 父类中保存引用的属性。 如果父属性是列表,则嵌入式对象将被添加到该列表的末尾。

返回:

新创建的嵌入式对象。

抛出异常

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

提示

另请参阅:

public E createObject <E >(
Object primaryKeyValue
)

实例化一个新对象并将其添加到已设置主键值的 Realm 中。如果该值违反了主键约束,则不会添加任何对象,并会抛出RealmException 。 模型类提供的主键默认值将被忽略。

参数

  • clazz — 要创建的对象的类。

  • primaryKeyValue - 主键字段的值。

返回:

新对象。

抛出异常

public E createObject <E >(
)

实例化一个新对象并将其添加到Realm中。此方法仅适用于没有 @PrimaryKey 注解的模型类。 如果要创建具有主键 的对象,请改用createObject(Class, Object)copyToRealm(RealmModel, ImportFlag...)

参数

  • clazz — 要创建的对象的类。

返回:

新对象。

抛出异常

  • RealmException - 如果在模型类中定义了主键或者无法创建对象。

提示

另请参阅:

public E createObjectFromJson <E >(
JSONObject json
)

创建一个预填充 JSON 对象数据的 Realm 对象。 这必须在事务中完成。 具有未知属性的 JSON 属性将被忽略。 如果 JSON 对象中不存在RealmObject字段,则RealmObject字段将设置为该类型的默认值。

此方法目前不支持值列表字段。

参数

  • clazz — 要创建的 Realm 对象的类型。

  • json - 包含对象数据的 JSONObject。

返回:

创建的对象,如果未提供 JSON 数据,则为null

抛出异常

提示

另请参阅:

public void createOrUpdateAllFromJson <E >(
JSONArray json
)

尝试使用新的 JSON 数据更新由其主键标识的现有对象的列表。 如果在 Realm 中找不到现有对象,则会创建一个新对象。 这必须在事务中进行。 如果更新对象时在 JSON 中未找到某个字段,则不会更新该字段。如果创建了新的RealmObject ,但在 JSON 对象中未找到某个字段,则将为该字段分配字段类型的默认值。

此方法目前不支持值列表字段。

参数

  • clazz — 要创建或更新的io.realm.RealmObject类型。 它必须定义主键。

  • json — 包含对象数据的数组。

抛出异常

提示

另请参阅:

JSONObject json
)

尝试使用新的 JSON 数据更新由主键定义的现有对象。 如果找不到现有对象,则 Realm 中将保存一个新对象。 这必须在事务中进行。 如果更新对象时在 JSON 中未找到某个字段,则不会更新该字段。如果创建了新的RealmObject ,但在 JSON 对象中未找到某个字段,则将为该字段分配字段类型的默认值。

此方法目前不支持值列表字段。

参数

  • clazz — 要创建或更新的io.realm.RealmObject类型。 它必须定义主键。

  • json — 包含对象数据的org.json.JSONObject

返回:

创建或更新了域.RealmObject

抛出异常

提示

另请参阅:

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

参数

  • clazz - 应删除对象的类。

抛出异常

public static boolean deleteRealm (
RealmConfiguration configuration
)

从文件系统中删除 Realm 文件以及由给定RealmConfiguration指定的相关临时文件。 带有“.lock”的临时文件 扩展不会被删除。

在调用此方法之前,必须关闭所有 Realm 实例。

警告:对于同步 Realm,即使所有用户控制的 Realm 实例都已关闭,后台线程上的内部 Realm 实例也有可能未关闭。 这将产生一个IllegalStateException 。 请参阅问题 https://github.com/realm/realm-java/issues/5416

参数

返回:

false 如果无法删除 Realm 文件。 临时文件删除失败不会影响返回值。 所有失败的文件删除操作都将被记录。

抛出异常

public void executeTransaction (
Realm.Transaction transaction
)

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

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

参数

抛出异常

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

参数

  • transaction - 要执行的io.realm.Realm.Transaction

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

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

返回:

代表可取消任务的RealmAsyncTask

抛出异常

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

参数

返回:

代表可取消任务的RealmAsyncTask

抛出异常

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

参数

返回:

代表可取消任务的RealmAsyncTask

抛出异常

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

参数

返回:

代表可取消任务的RealmAsyncTask

抛出异常

public Realm freeze ()

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

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

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

返回:

此 Realm 的冻结副本。

覆盖

freezeBaseRealm类中

public static Context getApplicationContext ()

获取使用Realm Realm.init(Context)Realm .init(Context,string ) 初始化 时使用的应用程序上下文。

返回:

Realm使用Realm .init(Context)Realm .init(Context,string ) Realm初始化 时使用的应用程序上下文;如果尚未初始化 ,则为 null。

返回getDefaultInstance()的默认配置。

返回:

默认配置对象,如果未指定默认配置,则为null

public static Realm getDefaultInstance ()

Realm 静态构造函数,返回由 setDefaultConfiguration(RealmConfiguration) 设置的 io.realm.RealmConfiguration 定义的 Realm 实例

返回:

Realm 类的实例。

抛出异常

public static Object getDefaultModule ()

返回默认 Realm 模块。 该模块包含当前项目中的所有 Realm 类,但不包括来自库或项目依赖项的类。 其中的 Realm 类应使用自己的模块公开。

返回:

默认 Realm 模块,如果默认模块不存在,则为null

抛出异常

public static int getGlobalInstanceCount (
RealmConfiguration configuration
)

返回当前进程中使用此配置的所有线程中当前打开的 Realm 实例数。 这包括动态 Realm 和普通 Realm。

参数

返回:

所有线程中打开的 Realm 实例数。

public static Realm getInstance (
RealmConfiguration configuration
)

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

参数

返回:

Realm 类的实例

抛出异常

RealmConfiguration configuration,
)

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

参数

  • configuration - 用于打开 Realm 的RealmConfiguration

  • callback — 调用以返回结果。

返回:

代表可取消任务的RealmAsyncTask

抛出异常

public static int getLocalInstanceCount (
RealmConfiguration configuration
)

返回调用此方法的线程上当前打开的 Realm 实例数。 这包括动态 Realm 和普通 Realm。

参数

返回:

调用者线程上打开的 Realm 实例数。

返回此Realm的模式。 模式不可变。 任何对其进行修改的尝试都会导致 UnsupportedOperationException

只能使用DynamicRealm.getSchema()修改模式 或通过迁移。

返回:

此 Realm 的RealmSchema

覆盖

getSchemaBaseRealm类中

public static synchronized void init (
Context context,
String userAgent
)

初始化 Realm 库并创建可供使用的默认配置。 在与任何其他 Realm API 交互之前,必须先调用此方法。一个好的方法是在 android.app.Application 中 子类:

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this, "MyApp/" + BuildConfig.VERSION_NAME);
}
}

请记住将其注册到AndroidManifest.xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
<application android:name=".MyApplication">
// ...
</application>
</manifest>

参数

  • context — 应用程序上下文。

  • userAgent — 可选的用户定义字符串,在建立会话时将作为User-Agent标头的一部分发送到 Realm 对象服务器。 非同步 Realm 不会使用此设置。

抛出异常

提示

另请参阅:

public static synchronized void init (
Context context
)

初始化 Realm 库并创建可供使用的默认配置。 在与任何其他 Realm API 交互之前,必须先调用此方法。一个好的方法是在 android.app.Application 中 子类:

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
}
}

请记住将其注册到AndroidManifest.xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
<application android:name=".MyApplication">
// ...
</application>
</manifest>

参数

  • context — 应用程序上下文。

抛出异常

提示

另请参阅:

public void insert (
RealmModel object
)

插入非托管 RealmObject。 这通常比copyToRealm(RealmModel, ImportFlag...)更快,因为它不返回插入的元素,而是执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。

请注意:

  • 我们不会检查提供的对象是否已经托管,因此插入托管对象可能会重复该对象。 仅当对象没有主键时才会发生复制。 具有主键的对象永远不会重复。

  • 我们不会为每个元素创建(也不会返回)托管RealmObject

  • 复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值

如果您希望返回托管RealmObject ,请使用copyToRealm(RealmModel, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。

参数

  • object — 要插入的 RealmObject。

抛出异常

插入非托管 RealmObject 的列表。 这通常比copyToRealm(Iterable, ImportFlag...)更快,因为它不返回插入的元素,并执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。

请注意:

  • 我们不会检查提供的对象是否已经托管,因此插入托管对象可能会重复该对象。 仅当对象没有主键时才会发生复制。 具有主键的对象永远不会重复。

  • 我们不会为每个元素创建(也不会返回)托管RealmObject

  • 复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值

如果您希望返回托管RealmObject ,请使用copyToRealm(Iterable, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。

参数

  • objects — 要插入的 RealmObject。

抛出异常

  • IllegalStateException - 如果相应的 Realm 已关闭、从不正确的线程调用或不在事务中调用。

public void insertOrUpdate (
RealmModel object
)

插入或更新非托管 RealmObject。 这通常比copyToRealmOrUpdate(RealmModel, ImportFlag...)更快,因为它不返回插入的元素,而是执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。

请注意:

  • 我们不会检查提供的对象是否已经托管,因此插入托管对象可能会重复该对象。 仅当对象没有主键时才会发生复制。 具有主键的对象永远不会重复。

  • 我们不会为每个元素创建(也不会返回)托管RealmObject

  • 复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值

如果您希望返回托管RealmObject ,请使用copyToRealm(RealmModel, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。

参数

  • object — 要插入的 RealmObject。

抛出异常

  • IllegalStateException - 如果相应的 Realm 已关闭、从不正确的线程调用或不在事务中调用。

插入或更新非托管 RealmObject 列表。 这通常比copyToRealmOrUpdate(Iterable, ImportFlag...)更快,因为它不返回插入的元素,并执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。

请注意:

  • 我们不会检查提供的对象是否已经托管,因此插入托管对象可能会重复该对象。 仅当对象没有主键时才会发生复制。 具有主键的对象永远不会重复。

  • 我们不会为每个元素创建(也不会返回)托管RealmObject

  • 复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值

如果您希望返回托管RealmObject ,请使用copyToRealm(Iterable, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。

参数

  • objects — 要插入的 RealmObject。

抛出异常

public boolean isEmpty ()

检查此io. 域。 Realm包含任何对象。

返回:

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

覆盖

isEmptyBaseRealm类中

public static void migrateRealm (
RealmConfiguration configuration,
RealmMigration migration
)

手动Atlas Triggers RealmMigration 上的迁移。

参数

  • configuration - the:ref: RealmConfiguration <io_realm_RealmConfiguration>

  • migration - 要在 Realm 上运行的RealmMigration 。 这将覆盖配置上设置的任何迁移。

抛出异常

public static void migrateRealm (
RealmConfiguration configuration
)

手动Atlas Triggers与给定 RealmConfiguration 关联的迁移。如果 Realm 已经是最新版本,则不会发生任何情况。

参数

抛出异常

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

抛出异常

提示

另请参阅:

删除指定的变更侦听器。

参数

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

抛出异常

提示

另请参阅:

public static void removeDefaultConfiguration ()

删除当前默认配置(如有)。 在使用 setDefaultConfiguration(RealmConfiguration) 设置新的默认配置之前,对 getDefaultInstance() 的任何进一步调用都将失败。
public static void setDefaultConfiguration (
RealmConfiguration configuration
)

设置io. 域.RealmConfiguration在调用getDefaultInstance()时使用。

参数

抛出异常

返回类型化 RealmQuery,可用于查询该类型的特定对象

参数

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

返回:

类型化 RealmQuery,可用于查询该类型的特定对象。

提示

另请参阅:

后退

ProxyState