クラス Device Realm
- java.lang.Object
-
- io.realm.DynamicRealm
-
- すべての実装インターフェース:
Closeable
,AutoCloseable
public class DynamicRealm extends Object
DeviceRealm はRealm
の動的バリアントです。 つまり、データやクエリへのすべてのアクセスは、クラス型参照ではなく、string ベースのクラス名を使用して行われます。これは、移行中や、CSV や XML ファイルなどの文字列ベースのデータを操作する場合に便利です。
同じ
RealmConfiguration
を使用して、動的モードとタイプ モードの両方で Realm ファイルを開くことができますが、タイプ バージョンと動的バージョンの両方が開いているときにスキーマを変更することは強く推奨されず、タイプ化された Realm がクラッシュする可能性が高くなります。 移行中は、Device Realm のみが開きます。動的 Realm ではスキーマまたはスキーマ バージョンは強制されず、
RealmMigration
コードはRealmConfiguration
で定義されている場合でも使用されません。つまり、Realm が 型モード で開かれるまで、スキーマの作成または検証は行われません。 Realm ファイルを最初に動的モードで開くと、クラスとフィールドに関する情報は含まれないため、スキーマで定義されたクラスのクエリは失敗します。
- 以下も参照してください。
Realm
,RealmSchema
-
-
ネストされたクラスの概要
ネストされたクラス 修飾子と型 クラス 説明 static class
DynamicRealm.Callback
Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)
またはgetInstanceAsync(RealmConfiguration, DynamicRealm.Callback)
のいずれかを使用して Realm を非同期にロードした結果を報告するときに使用されるコールバック。static interface
DynamicRealm.Transaction
Realm トランザクションをカプセル化します。
-
フィールドの概要
フィールド 修飾子と型 フィールド 説明 static io.realm.BaseRealm.ThreadLocalRealmObjectContext
objectContext
io.realm.internal.OsSharedRealm
sharedRealm
static io.realm.internal.async.RealmThreadPoolExecutor
WRITE_EXECUTOR
書込み操作に使用されるスレッド プール エグゼキュータ。書込みは並列化できないため、1 つのスレッドのみが必要です。
-
メソッドの概要
すべてのメソッド 静的メソッド インスタンス メソッド 具象メソッド 非推奨メソッド 修飾子と型 方式 説明 void
addChangeListener(RealmChangeListener<DynamicRealm> listener)
Realm に変更リスナーを追加します。Flowable<DynamicRealm>
asFlowable()
この Realm への変更を監視する RxJava フロー可能を返します。void
beginTransaction()
トランザクションを開始します。このトランザクションはBaseRealm.commitTransaction()
によって閉じられるか、BaseRealm.cancelTransaction()
によって中止される必要があります。void
cancelTransaction()
現在の書込みトランザクションで行われたすべての書込み(作成、更新、または削除されたオブジェクト)を元に戻し、トランザクションを終了します。void
close()
Realm インスタンスとそのすべてのリソースを閉じます。void
commitTransaction()
BaseRealm.beginTransaction()
以降のすべての変更はディスクに永続化し、Realm は読み取り専用に戻ります。DynamicRealmObject
createEmbeddedObject(String className, DynamicRealmObject parentObject, String parentProperty)
インスタンス化して、新しい埋め込みオブジェクトを Realm に追加します。DynamicRealmObject
createObject(String className)
インスタンス化して、新しいオブジェクトを Realm に追加します。DynamicRealmObject
createObject(String className, Object primaryKeyValue)
指定されたプライマリキーを持つオブジェクトを作成します。void
delete(String className)
指定されたクラスのすべてのオブジェクトを Realm から削除します。void
deleteAll()
この Realm からすべてのオブジェクトを削除します。void
executeTransaction(DynamicRealm.Transaction transaction)
指定されたトランザクションを DeploymentRealm で実行します。RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction)
executeTransaction(Transaction)
と同様ですが、ワーカー スレッドで非同期に実行されます。RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnError onError)
executeTransactionAsync(Transaction)
と同様ですが、 OnError コールバックも受け入れます。RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess)
executeTransactionAsync(Transaction)
と同様ですが、 OnSuccess コールバックも受け入れます。RealmAsyncTask
executeTransactionAsync(DynamicRealm.Transaction transaction, DynamicRealm.Transaction.OnSuccess onSuccess, DynamicRealm.Transaction.OnError onError)
executeTransactionAsync(Transaction)
と同様ですが、 OnSuccess と OnError コールバックも受け入れます。DynamicRealm
freeze()
現在の Realm の固定スナップショットを返します。RealmConfiguration
getConfiguration()
この Realm のRealmConfiguration
を返します。static DynamicRealm
getInstance(RealmConfiguration configuration)
RealmConfiguration
によって定義された Realm インスタンスの動的バリアントを返す Realm 静的コンストラクター。static RealmAsyncTask
getInstanceAsync(RealmConfiguration configuration, DynamicRealm.Callback callback)
プロセスでRealmConfiguration
ごとに最初の Realm インスタンスを作成するには、その時点ですべての初期化コードを実行する必要があるため、時間がかかる場合があります(Realmの設定、スキーマの検証、初期データの作成)。long
getNumberOfActiveVersions()
この Realm によって現在保持されているアクティブなバージョンの現在の数を返します。String
getPath()
この Realm がディスク上で保存されている場所への標準パスを返します。RealmSchema
getSchema()
この Realm の可変スキーマを返します。SubscriptionSet
getSubscriptions()
この Realm に関連付けられているサブスクリプションセットを返します。long
getVersion()
この Realm のスキーマ バージョンを返します。boolean
isAutoRefresh()
Realm インスタンスの自動更新ステータスを取得します。boolean
isClosed()
Realm
インスタンスがすでに閉じられているかどうかを確認します。boolean
isEmpty()
このRealm
にオブジェクトが含まれているかどうかを確認します。boolean
isFrozen()
この Realm が固定されているかどうかを返します。boolean
isInTransaction()
Realm が現在トランザクションを実行中かどうかを確認します。void
refresh()
Realm インスタンスと、それから取得されるすべての RealmResults インスタンスおよび RealmObjects インスタンスを更新します。void
removeAllChangeListeners()
ユーザー定義のすべての変更リスナーを削除します。void
removeChangeListener(RealmChangeListener<DynamicRealm> listener)
指定された変更リスナーを削除します。void
setAutoRefresh(boolean autoRefresh)
Realm インスタンスの自動更新ステータスを設定します。void
stopWaitForChange()
非推奨。このメソッドは次のメジャー リリースで削除されます:boolean
waitForChange()
非推奨。このメソッドは、次のメジャー リリースで削除されます。RealmQuery<DynamicRealmObject>
where(String className)
指定されたクラスをクエリするために使用できる RealmQuery を返します。void
writeCopyTo(File destination)
Realm の圧縮されたコピーを指定された宛先ファイルに書込みます。void
writeEncryptedCopyTo(File destination, byte[] key)
Realm の圧縮され暗号化されたコピーを指定された宛先ファイルに書込みます。
-
-
-
フィールドの詳細
-
WRITE_EXECUTOR
public static final io.realm.internal.async.RealmThreadPoolExecutor WRITE_EXECUTOR
書込み操作に使用されるスレッド プール エグゼキュータ。書込みは並列化できないため、1 つのスレッドのみが必要です。
-
SharedRealm
public io.realm.internal.OsSharedRealm sharedRealm
-
objectContext
public static final io.realm.BaseRealm.ThreadLocalRealmObjectContext objectContext
-
-
メソッドの詳細
-
getInstance
public static DynamicRealm getInstance(RealmConfiguration configuration)
RealmConfiguration
によって定義された Realm インスタンスの動的バリアントを返す Realm 静的コンストラクター。 動的 Realm では schemaVersion とスキーマは管理されないため、Device Realm を開きても移行はtriggerされません。- 次の値を返します。
- 構成によって定義された 動的Realm 。
- 次の例外がスローされます。
RealmFileException
- 基礎となる Realm ファイルにアクセスするときにエラーが発生した場合。IllegalArgumentException
-configuration
引数がnull
の場合。- 以下も参照してください。
for details on how to configure a Realm.
-
getInstanceAsync
public static RealmAsyncTask getInstanceAsync(RealmConfiguration configuration, DynamicRealm.Callback callback)
プロセスでRealmConfiguration
ごとに最初の Realm インスタンスを作成するには、その時点ですべての初期化コードを実行する必要があるため、時間がかかる場合があります(Realmの設定、スキーマの検証、初期データの作成)。 このメソッドは初期化作業をバックグラウンド スレッドに配置し、初期化完了後に Realm インスタンスを呼び出し元のスレッドに非同期に配信します。- パラメーター:
configuration
- Realm を開くために使用されるRealmConfiguration
callback
- 結果を返すために呼び出されます。- 次の値を返します。
- キャンセル可能なタスクを表す
RealmAsyncTask
。 - 次の例外がスローされます。
IllegalArgumentException
- nullRealmConfiguration
または nullDynamicRealm.Callback
が提供された場合。IllegalStateException
- 以外の loader またはIntentService
スレッドから呼び出された場合。- 以下も参照してください。
for more details.
-
createObject
public解決書込み ( string )
インスタンス化して、新しいオブジェクトを Realm に追加します。- パラメーター:
className
- 作成するオブジェクトのクラス名。- 次の値を返します。
- 新しい オブジェクト。
- 次の例外がスローされます。
RealmException
- オブジェクトを作成できなかった場合。
-
createObject
stringDescribe
指定されたプライマリキーを持つオブジェクトを作成します。 プライマリキーが定義されていないクラスでは、代わりにcreateObject(String)
} を使用する必要があります。- 次の値を返します。
- 新しい オブジェクト。 すべてのフィールドにはそのタイプのデフォルト値が含まれます。ただし、指定された値を持つプライマリキー フィールドは除きます。
- 次の例外がスローされます。
RealmException
- プライマリキーが無効であるためオブジェクトを作成できなかった場合。IllegalStateException
- モデル化にプライマリキーが定義されていない場合。IllegalArgumentException
- 期待値に変換できる値がprimaryKeyValue
にない場合。
-
create埋め込みオブジェクト
解決string string済みオブジェクト 作成し、
インスタンス化して、新しい埋め込みオブジェクトを Realm に追加します。このメソッドは、埋め込みとしてマークされているタイプのオブジェクトを作成するためにのみ使用してください。
- パラメーター:
className
- 作成するオブジェクトのクラス名。parentObject
- 埋め込みオブジェクトへの参照を保持する親オブジェクト。 親プロパティがリストの場合、埋め込みオブジェクトはそのリストの末尾に追加されます。parentProperty
- 参照を保持する親クラスの プロパティ。- 次の値を返します。
- 新しく作成された埋め込みオブジェクト。
- 次の例外がスローされます。
IllegalArgumentException
-clazz
が埋め込みクラスではない場合、または親クラスのプロパティが適切な型のオブジェクトを保持できない場合。- 以下も参照してください。
RealmClass.embedded()
-
WHERE
public RealmQuery<DynamicRealmObject> where(String className)
指定されたクラスをクエリするために使用できる RealmQuery を返します。- パラメーター:
className
- クエリ対象のオブジェクトのクラス。- 次の値を返します。
- RealmQuery は、提供されたタイプの特定のオブジェクトをクエリするために使用できます。
- 次の例外がスローされます。
IllegalArgumentException
- クラスが存在しない場合。- 以下も参照してください。
RealmQuery
-
addchangeLister
public void addChangeListener(RealmChangeListener<DynamicRealm> listener)
Realm に変更リスナーを追加します。このスレッドまたは別のスレッドによって変更がコミットされたときにリスナーが実行されます。
Realm インスタンスはスレッドごとにキャッシュされます。 そのため、
removeChangeListener(RealmChangeListener)
またはremoveAllChangeListeners()
を使用して再度リスナーを削除するように促すことが重要です。 メモリ リークが発生する可能性があります。- パラメーター:
listener
- 変更リスナー。- 次の例外がスローされます。
IllegalArgumentException
- 変更リスナーがnull
の場合。- 以下も参照してください。
RealmChangeListener
,removeChangeListener(RealmChangeListener)
,removeAllChangeListeners()
,refresh()
-
deleteCheckLister
public void removeChangeListener(RealmChangeListener<DynamicRealm> listener)
指定された変更リスナーを削除します。- パラメーター:
listener
- 削除する変更リスナー。- 次の例外がスローされます。
IllegalArgumentException
- 変更リスナーがnull
の場合。IllegalStateException
- 非ルーパー スレッドからリスナーを削除しようとする場合。- 以下も参照してください。
RealmChangeListener
-
deleteAllTimeListers
public void removeAllChangeListeners()
ユーザー定義のすべての変更リスナーを削除します。- 次の例外がスローされます。
IllegalStateException
- 非ループ スレッドからリスナーを削除しようとする場合。- 以下も参照してください。
RealmChangeListener
-
削除
public void delete(String className)
指定されたクラスのすべてのオブジェクトを Realm から削除します。- パラメーター:
className
- すべてのオブジェクトを削除するクラス。- 次の例外がスローされます。
IllegalStateException
- Realm が閉じられている、または誤ったスレッドから呼び出されている場合。
-
executionTransaction
public void executeTransaction(DynamicRealm.Transaction transaction)
指定されたトランザクションを DeploymentRealm で実行します。beginTransaction()
とcommitTransaction()
が自動的に呼び出されます。 トランザクション中に例外が発生した場合、 ではなくcancelTransaction()
commitTransaction()
が呼び出されます。UI スレッドからこのメソッドを呼び出すと、
RealmException
がスローされます。 フレームワークが削除されるか、 ARN が発生する可能性があります。 非 UI スレッドからこのメソッドを呼び出すか、代わりにexecuteTransactionAsync(Transaction)
を使用することを推奨します。- パラメーター:
transaction
-DynamicRealm.Transaction
を実行するには- 次の例外がスローされます。
IllegalArgumentException
-transaction
がnull
の場合。RealmException
- UI スレッドから呼び出された場合、RealmConfiguration.Builder.allowWritesOnUiThread(boolean)
で明示的なオプトインが宣言されていない限り、
-
executionTransactionAsync
public RealmAsyncTask executionTransactionAsync ( DeviceRealm.Transaction transaction)
executeTransaction(Transaction)
と同様ですが、ワーカー スレッドで非同期に実行されます。- パラメーター:
transaction
-DynamicRealm.Transaction
を実行するには- 次の値を返します。
- キャンセル可能なタスクを表す
RealmAsyncTask
。 - 次の例外がスローされます。
IllegalArgumentException
-transaction
がnull
の場合、または Realm が別のスレッドから開かれている場合。
-
executionTransactionAsync
public RealmAsyncTask executionTransactionAsync ( DeviceRealm.Transaction transaction、 DeviceRealm.Transaction.OnSuccess onSuccess)
executeTransactionAsync(Transaction)
と同様ですが、 OnSuccess コールバックも受け入れます。- パラメーター:
transaction
-DynamicRealm.Transaction
を実行するにはonSuccess
- トランザクションが成功したときに呼び出されるコールバック。- 次の値を返します。
- キャンセル可能なタスクを表す
RealmAsyncTask
。 - 次の例外がスローされます。
IllegalArgumentException
-transaction
がnull
の場合、または Realm が別のスレッドから開かれている場合。
-
executionTransactionAsync
public RealmAsyncTask executionTransactionAsync ( DeviceRealm.Transaction transaction、 DeviceRealm.Transaction.OnError onError)
executeTransactionAsync(Transaction)
と同様ですが、 OnError コールバックも受け入れます。- パラメーター:
transaction
-DynamicRealm.Transaction
を実行するにはonError
- トランザクションが失敗したときに呼び出されるコールバック。- 次の値を返します。
- キャンセル可能なタスクを表す
RealmAsyncTask
。 - 次の例外がスローされます。
IllegalArgumentException
-transaction
がnull
の場合、または Realm が別のスレッドから開かれている場合。
-
executionTransactionAsync
public RealmAsyncTask executionTransactionAsync ( D こと で
executeTransactionAsync(Transaction)
と同様ですが、 OnSuccess と OnError コールバックも受け入れます。- パラメーター:
transaction
-DynamicRealm.Transaction
を実行するにはonSuccess
- トランザクションが成功したときに呼び出されるコールバック。onError
- トランザクションが失敗したときに呼び出されるコールバック。- 次の値を返します。
- キャンセル可能なタスクを表す
RealmAsyncTask
。 - 次の例外がスローされます。
IllegalArgumentException
-transaction
がnull
の場合、または Realm が別のスレッドから開かれている場合。
-
asFlowable
public Flowable<DynamicRealm> asFlowable()
この Realm への変更を監視する RxJava フロー可能を返します。 にサブスクライブすると、現在の状態が発行されます。 Realm が更新されるにつれてアイテムは継続的に出力されます。onComplete
は呼び出されません。Realm フロー可能から出力されるアイテムは固定されています(
freeze()
を参照してください。 つまり、これらは不変で、どのスレッドでも読み取ることができます。Realm フロー接続は、ライブ 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
- 次の値を返します。
- RxJava Observable は
onNext
のみを呼び出します。onComplete
またはOnError
は呼び出されません。 - 以下も参照してください。
- RxJava と Realm
-
isEmpty
公開ブール値 isEmpty()
このRealm
にオブジェクトが含まれているかどうかを確認します。- 次の値を返します。
true
空の場合は @{code false} を します。
-
getSchema
public RealmSchema getSchema()
この Realm の可変スキーマを返します。- 次の値を返します。
- この Realm の
RealmSchema
。
-
freeze
public DeviceRealmize ()
現在の Realm の固定スナップショットを返します。 この Realm は、IllegalStateException
をスローすることなく、任意のスレッドから読み取りとクエリを実行できます。 固定された Realm には独自のライフサイクルがあり、Closeable.close()
を呼び出すことで閉じることができますが、固定されたコピーを生成した Realm を完全に閉じると、固定された Realm も閉じられます。凍結されたデータは通常どおりクエリできますが、そのデータを何らかの方法で変更しようとしたり、リスナーを登録しようとすると
IllegalStateException
がスローされます。注: 異なるバージョンを持つ多数の Realm を有効にすると、Realm のファイルサイズに悪影響が及ぶ可能性があります。 このような状況を回避するには、
RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
を設定します。- 次の値を返します。
- この Realm の固定コピー。
-
setAutoRefresh
public void setAutoRefresh(boolean autoRefresh)
Realm インスタンスの自動更新ステータスを設定します。自動更新は、別のスレッドの同じファイルで動作している Realm でコミットが実行されたときに、現在の Realm インスタンスとそのすべての派生オブジェクト(RealmResults および RealmObject インスタンス)の自動更新を可能にする機能です。 この機能は、Realm インスタンスが
Looper
有効スレッドで存在する場合にのみ使用できます。- パラメーター:
autoRefresh
-true
は自動更新をオンにし、false
は自動更新をオフにします。- 次の例外がスローされます。
IllegalStateException
- 非 ルーター スレッドから呼び出された場合。
-
isAutoRefresh
公開ブール値 isAutoRefresh()
Realm インスタンスの自動更新ステータスを取得します。- 次の値を返します。
- 自動更新ステータス。
-
refresh
public void refresh()
Realm インスタンスと、それから取得されるすべての RealmResults インスタンスおよび RealmObjects インスタンスを更新します。 また、必要に応じて、Realm に関連付けられているリスナーも呼び出します。警告: 非同期クエリを使用するスレッドでこれを呼び出すと、それらのクエリは同期クエリに変わります。 つまり、Realm インスタンスを取得するために が
RealmException
RealmConfiguration.Builder.allowQueriesOnUiThread(boolean)
と併用された場合、このメソッドは をスローします。true
ほとんどの場合、このメソッドを使用するよりも、RealmChangeListener
を使用して特定のスレッド上の Realm への変更を通知する方が優れています。- 次の例外がスローされます。
IllegalStateException
- トランザクション内から更新を試みる場合。RealmException
-RealmConfiguration.Builder.allowQueriesOnUiThread(boolean)
経由でオプトアウトした後に UI スレッドから呼び出された場合
-
isInTransaction
公開ブール値 isInTransaction()
Realm が現在トランザクションを実行中かどうかを確認します。- 次の値を返します。
true
トランザクション内では、それ以外の場合はfalse
。
-
writeCopyTo
public void writeCopyTo(File destination)
Realm の圧縮されたコピーを指定された宛先ファイルに書込みます。 結果のファイルを初期データセットとして使用して、他のデバイスでローカルまたは同期された Realm をブートストラップできます。宛先ファイルがすでに存在することはできません。
これがトランザクション内から呼び出されると、最後のトランザクションがコミットされたときのデータではなく、現在のデータが書込まれることに注意してください。
- パラメーター:
destination
Realm を保存する - ファイル。- 次の例外がスローされます。
IllegalArgumentException
- 宛先引数が null の場合。RealmFileException
- 基礎となる Realm ファイルにアクセスするか、宛先ファイルに書き込むときにエラーが発生した場合。IllegalStateException
- UI スレッドから呼び出された場合。IllegalStateException
- すべてのクライアントの変更がサーバーに統合されていない場合。
-
writeEncryptedCopyTo
public void writeEncryptedCopyTo(File destination, byte[] key)
Realm の圧縮され暗号化されたコピーを指定された宛先ファイルに書込みます。 結果のファイルを初期データセットとして使用して、他のデバイスでローカルまたは同期された Realm をブートストラップできます。宛先ファイルがすでに存在することはできません。
これがトランザクション内から呼び出されると、最後のトランザクションがコミットされたときのデータではなく、現在のデータが書込まれることに注意してください。
- パラメーター:
destination
Realm を保存する - ファイル。key
- 64 バイトの暗号化のキー。- 次の例外がスローされます。
IllegalArgumentException
- 宛先引数が null の場合。RealmFileException
- 基礎となる Realm ファイルにアクセスするか、宛先ファイルに書き込むときにエラーが発生した場合。IllegalStateException
- UI スレッドから呼び出された場合。IllegalStateException
- すべてのクライアントの変更がサーバーに統合されていない場合。
-
waitForchange
@非推奨公開ブール値waitForchange ()
非推奨。このメソッドは、次のメジャー リリースで削除されます。Realm への新しい変更が利用可能になるまで、またはstopWaitForChange()
が別のスレッドから呼び出されるまで、現在のスレッドをブロックします。 stopWaitForchange が呼び出されると、このメソッドへのすべての呼び出しはすぐに false を返します。- 次の値を返します。
true
Realm が最新バージョンに更新されている場合は 、 stopWaitForchange を呼び出してキャンセルされた場合はfalse
になります。- 次の例外がスローされます。
IllegalStateException
- トランザクション内または Loader スレッドからこれを呼び出す場合。RealmMigrationNeededException
- 最新バージョンに互換性のないスキーマ変更が含まれている場合は、 とタイプ しRealm
。
-
stopWaitForchange
@Deprecated public void stopWaitForChange()
非推奨。このメソッドは次のメジャー リリースで削除されます:現在のwaitForChange()
がfalse
をすぐに返します。 これが呼び出されると、waitForchange に対するすべての呼び出しによってすぐにfalse
が返されます。このメソッドはスレッドセーフであり、 waitForchange を呼び出したスレッドとは別のスレッドから _only_ を呼び出す必要があります。
- 次の例外がスローされます。
IllegalStateException
-Realm
インスタンスがすでに閉じられている場合。
-
startTransaction
public void beginTransaction()
トランザクションを開始します。このトランザクションはBaseRealm.commitTransaction()
によって閉じられるか、BaseRealm.cancelTransaction()
によって中止される必要があります。 トランザクションは、Realm 内のオブジェクトをアトミックに作成、更新、および削除するために使用されます。トランザクションを開始する前に、Realm インスタンスは最新バージョンに更新され、他のスレッドからの変更をすべて含めます。 この更新では、登録されたtrigger
RealmChangeListener
は されません。したがって、トランザクション内から変更する必要がある項目はクエリで実行されることをお勧めします。 そうしないと、トランザクションの開始時に結果の一部が削除または変更されるリスクがあります。
// Don't do this RealmResults<Person> persons = realm.where(Person.class).findAll(); realm.beginTransaction(); persons.first().setName("John"); realm.commitTransaction(); // Do this instead realm.beginTransaction(); RealmResults<Person> persons = realm.where(Person.class).findAll(); persons.first().setName("John"); realm.commitTransaction();
注: トランザクションをネストすることはできません。 トランザクション内でトランザクションを開始すると、 の例外がスローされます。
- 次の例外がスローされます。
RealmMigrationNeededException
- 最新バージョンに互換性のないスキーマ変更が含まれている場合は、 とタイプ しRealm
。
-
commitTransaction
public void commitTransaction()
BaseRealm.beginTransaction()
以降のすべての変更はディスクに永続化し、Realm は読み取り専用に戻ります。 変更が発生したことを他のすべての Realm インスタンスに通知するために、 イベントが送信されます。 イベントが受信されると、他の Realm は、このコミットの変更を反映するようにオブジェクトとRealmResults
を更新します。
-
CancelTransaction
public void cancelTransaction()
現在の書込みトランザクションで行われたすべての書込み(作成、更新、または削除されたオブジェクト)を元に戻し、トランザクションを終了します。Realm が読み取り専用に戻ります。
トランザクションにない場合にこれを呼び出すと、例外がスローされます。
-
IsFrozen
公開ブール値 isFrozen()
この Realm が固定されているかどうかを返します。- 次の値を返します。
true
Realm が固定されている場合は 、固定されていない場合はfalse
になります。- 以下も参照してください。
freeze()
-
getNumberOfActiveVersions
public long getNumberOfActiveVersions()
この Realm によって現在保持されているアクティブなバージョンの現在の数を返します。アクティブなバージョンの数が多いと、Realm ファイルのサイズに悪影響が生じます。 詳しくは、 FAQを参照してください。
- 次の値を返します。
- Realm によって現在保持されているアクティブなバージョンの数。
- 以下も参照してください。
RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
-
getPath
public string getPath()
この Realm がディスク上で保存されている場所への標準パスを返します。- 次の値を返します。
- Realm ファイルへの標準パス。
- 以下も参照してください。
File.getCanonicalPath()
-
getConfiguration
public RealmConfiguration getConfiguration()
この Realm のRealmConfiguration
を返します。- 次の値を返します。
- この Realm の
RealmConfiguration
。
-
getVersion
public long getVersion()
この Realm のスキーマ バージョンを返します。- 次の値を返します。
- この Realm をバッキングする Realm ファイルのスキーマ バージョン。
-
閉じる
public void close()
Realm インスタンスとそのすべてのリソースを閉じます。メモリ、ファイル記述子、Realm ファイルのサイズが異常に大きくならないように、終了したら Realm インスタンスを常に閉じることが重要です。
- 次のによって指定されます。
close
内 インターフェースAutoCloseable
- 次のによって指定されます。
close
内 インターフェースCloseable
- 次の例外がスローされます。
IllegalStateException
- 別のスレッドから閉じようとした場合
-
isClosed
公開ブール値 isClosed()
Realm
インスタンスがすでに閉じられているかどうかを確認します。- 次の値を返します。
true
閉じている場合はfalse
、閉じている場合は 。- 次の例外がスローされます。
IllegalStateException
- 別のスレッドから閉じようとした場合
-
getSubscriptions
public SubscriptionSet getSubscriptions()
この Realm に関連付けられているサブスクリプションセットを返します。 サブスクリプションセットは、この Realm とサーバー間で同期されるデータを定義するクエリのセットを定義します。この方法は、フレキシブルな同期を使用して同期された Realm にのみ適用されます。
- 次の値を返します。
- このRealmに関連付けられている サブスクリプションセット 。
- 次の例外がスローされます。
IllegalStateException
- この Realm がローカル Realm または部分ベースの同期済み Realm のいずれかである場合。
-
deleteAll
public void deleteAll()
この Realm からすべてのオブジェクトを削除します。- 次の例外がスローされます。
IllegalStateException
- Realm が閉じられている、または誤ったスレッドから呼び出されている場合。
-
-