パッケージ io.realm

クラス Device Realm

  • すべての実装インターフェース:
    Closeable, AutoCloseable

    public class DynamicRealm
    extends Object
    DeviceRealm はRealmの動的バリアントです。 つまり、データやクエリへのすべてのアクセスは、クラス型参照ではなく、string ベースのクラス名を使用して行われます。

    これは、移行中や、CSV や XML ファイルなどの文字列ベースのデータを操作する場合に便利です。

    同じRealmConfigurationを使用して、動的モードとタイプ モードの両方で Realm ファイルを開くことができますが、タイプ バージョンと動的バージョンの両方が開いているときにスキーマを変更することは強く推奨されず、タイプ化された Realm がクラッシュする可能性が高くなります。 移行中は、Device Realm のみが開きます。

    動的 Realm ではスキーマまたはスキーマ バージョンは強制されず、 RealmMigrationコードはRealmConfigurationで定義されている場合でも使用されません。

    つまり、Realm が 型モード で開かれるまで、スキーマの作成または検証は行われません。 Realm ファイルを最初に動的モードで開くと、クラスとフィールドに関する情報は含まれないため、スキーマで定義されたクラスのクエリは失敗します。

    以下も参照してください。
    Realm, RealmSchema
    • フィールドの詳細

      • 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 - null RealmConfigurationまたは null DynamicRealm.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
      • 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 が閉じられている、または誤ったスレッドから呼び出されている場合。
      • executionTransactionAsync

        public RealmAsyncTask executionTransactionAsync ( D こと 
        executeTransactionAsync(Transaction)と同様ですが、 OnSuccess と OnError コールバックも受け入れます。
        パラメーター:
        transaction - DynamicRealm.Transactionを実行するには
        onSuccess - トランザクションが成功したときに呼び出されるコールバック。
        onError - トランザクションが失敗したときに呼び出されるコールバック。
        次の値を返します。
        キャンセル可能なタスクを表すRealmAsyncTask
        次の例外がスローされます。
        IllegalArgumentException - transactionnullの場合、または 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()
      • 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 が閉じられている、または誤ったスレッドから呼び出されている場合。