パッケージ io.realm.mongodb.sync

クラスの同期


  • public class SyncSession
    extends Object
    セッションは、デバイス上の単一の Realm と Realm オブジェクト サーバー上のサーバー Realm との間でデータを同期する方法を制御します。

    セッションは、 SyncConfigurationを使用して Realm インスタンスを開くことで作成されます。 セッションが作成されると、アプリが閉じられるか、このSyncConfigurationを使用するすべてのスレッドがそれぞれのRealmを閉じるまで、そのセッションは存在し続けます。

    セッションは Realm によって制御されますが、エラーが発生した場合に追加情報を提供できます。 これらのエラーはSyncSession.ErrorHandlerに渡されます。

    セッションを作成する際、Realm はサーバーへの接続を確立します。 この接続は Realm によって制御され、複数のセッション間で共有される場合があります。 addConnectionChangeListener(ConnectionListener)isConnected()を使用して接続のインサイトを得ることが可能です。

    セッション自体のライフサイクルは、基礎となる接続とは異なります。 セッションの状態は、 getState()を使用して見つけることができます。

    SyncSessionオブジェクトはスレッドセーフです。

    • メソッドの詳細

      • getConfiguration

        public SyncConfiguration getConfiguration()
        セッションを制御する役割のSyncConfigurationを返します。
        次の値を返します。
        このセッションを定義および制御する SyncConfiguration。
      • getUser

        publicユーザーgetUser()
        UserSyncConfigurationMongoDB Realm への接続に使用される によって定義された を返します。
        次の値を返します。
        User MongoDB Realm でセッションを認証するために使用されます。
      • getServerUrl

        public URI getServerUrl()
        このセッションが接続して変更を同期するリモート Realm を説明するURIを返します。
        次の値を返します。
        URI リモート Realm を説明します。
      • getState

        public SyncSession.State getState()
        SyncSession.Stateで定義されている現在のセッションの状態を取得します。

        このメソッドが返した後に状態が変化する可能性があることに注意してください。

        次の値を返します。
        セッションの状態
        以下も参照してください。
        SyncSession.State
      • getConnectionState

        public ConnectionState getConnectionState()
        ConnectionStateで定義されている、セッションで使用される接続の現在の状態を取得します。
        次の値を返します。
        セッションで使用される接続の状態
        以下も参照してください。
        ConnectionState
      • isConnected

        公開ブール値 isConnected()
        セッションがサーバーに接続され、データを同期できるかどうかを確認します。 これは推測的結果です。 消費量を節約するために、基礎の実装はハートビートを使用して接続がまだ利用可能かどうかを検出します。 したがって、アクティブに同期されているデータがなく、最後のハートビートから時間が経過した場合、接続は切断された可能性がありますが、このメソッドは引き続きtrueを返します。
        次の値を返します。
        true セッションが接続され、データを同期する準備ができている場合は 、未接続の場合はfalse 、接続プロセス中の場合は 0}。
      • addProgressLister

        public void addDownloadProgressListener​(ProgressMode mode,
                                                ProgressListener listener)
        Realm Object Server からダウンロードする必要がある変更を追跡する進行状況リスナーを追加します。

        ProgressListenerは、登録されるとすぐにトリガーされ、その後は定期的にトリガーされます。

        パラメーター:
        mode - 使用されるモードのタイプ。 詳しくは、 ProgressModeを参照してください。
        listener - 登録するリスナー。
      • addUploadProgressLister

        public void addUploadProgressListener​(ProgressMode mode,
                                              ProgressListener listener)
        デバイスから Realm オブジェクト サーバーにアップロードする必要がある変更を追跡する進行状況リスナーを追加します。

        ProgressListenerは、登録されるとすぐにトリガーされ、その後は定期的にトリガーされます。

        パラメーター:
        mode - 使用されるモードのタイプ。 詳しくは、 ProgressModeを参照してください。
        listener - 登録するリスナー。
      • deleteProgressLister

        public void removeProgressListener​(ProgressListener listener)
        進行状況リスナーを削除します。 リスナーが登録されていない場合、このメソッドは何も実行しません。
        パラメーター:
        listener - 削除するリスナー。
      • addConnection ChangeLister

        public void addConnectionChangeListener​(ConnectionListener listener)
        このセッションをサポートする接続への変更を追跡するリスナーを追加します。 詳細については、 ConnectionStateを参照してください。
        パラメーター:
        listener - 登録するリスナー。
        次の例外がスローされます。
        IllegalArgumentException - リスナーがnullの場合。
        以下も参照してください。
        ConnectionState
      • deleteConnection存在の変更リスナー

        public void removeConnectionChangeListener​(ConnectionListener listener)
        以前に登録されたConnectionListenerを削除します。
        パラメーター:
        listener - 削除するリスナー
        次の例外がスローされます。
        IllegalArgumentException - リスナーがnullの場合。
      • ダウンロードAllServerChecks

        public void downloadAllServerChanges()
                                      throws InterruptedException
        このメソッドを呼び出すと、既知のリモート変更がすべてダウンロードされ、Realm に適用されるまでブロックされます。 これにはネットワーク アクセスが含まれるため、このメソッドを呼び出す場合は UI 以外のスレッドからのみ実行する必要があります。

        デバイスがオフラインの場合、このメソッドは返されない可能性があります。

        このメソッドは、セッションが開始される前に呼び出すことができません。

        次の例外がスローされます。
        IllegalStateException - Android のメイン スレッドで呼び出された場合
        InterruptedException - ダウンロードの進行中にスレッドが中断された場合。
      • ダウンロードAllServerChecks

        公開ブール値をダウンロードAllServerchanges(長いタイムアウト、 TimeUnit単位)がInterruptedExceptionをスローします
        このメソッドを呼び出すと、既知のリモート変更がすべてダウンロードされ Realm に適用されるか、指定されたタイムアウトに達するまでブロックされます。 これにはネットワーク アクセスが含まれるため、このメソッドを呼び出す場合は UI 以外のスレッドからのみ実行する必要があります。

        このメソッドは、Realm が開かれる前に呼び出すことができません。

        次の値を返します。
        true タイムアウト前にデータがダウンロードされた場合。 操作がタイムアウトしたなどして失敗した場合は、 false
        次の例外がスローされます。
        IllegalStateException - Android のメイン スレッドで呼び出された場合
        InterruptedException - 指定されたタイムアウトよりもダウンロードに時間がかかった場合、またはダウンロードの進行中にスレッドが中断された場合。 この例外がスローされた後でも、バックグラウンドでダウンロードは続行されます。
        IllegalArgumentException - timeout0以下の場合、またはunitnullの場合。
      • アップロードAllLocalchanges

        public void uploadAllLocalChanges()
                                   throws InterruptedException
        このメソッドを呼び出すと、既知のローカル変更がすべてサーバーにアップロードされるまでブロックされます。 これにはネットワーク アクセスが含まれるため、このメソッドを呼び出す場合は UI 以外のスレッドからのみ実行する必要があります。

        デバイスがオフラインの場合、このメソッドは返されない可能性があります。

        このメソッドは、Realm が開かれる前に呼び出すことができません。

        次の例外がスローされます。
        IllegalStateException - Android のメイン スレッドで呼び出された場合
        InterruptedException - ダウンロードの進行中にスレッドが中断された場合。
      • アップロードAllLocalchanges

        公開ブール値アップロードAllLocalchanges(長いタイムアウト、 TimeUnit単位)はInterruptedExceptionをスローします
        このメソッドを呼び出すと、既知のローカル変更がすべてサーバーにアップロードされるか、指定されたタイムアウトに達するまでブロックされます。 これにはネットワーク アクセスが含まれるため、このメソッドを呼び出す場合は UI 以外のスレッドからのみ実行する必要があります。

        このメソッドは、Realm が開かれる前に呼び出すことができません。

        次の値を返します。
        true タイムアウト前にデータがアップロードされた場合。 操作がタイムアウトしたなどして失敗した場合は、 false
        次の例外がスローされます。
        IllegalStateException - Android のメイン スレッドで呼び出された場合
        InterruptedException - アップロードに指定されたタイムアウトよりも長い時間がかかる場合、またはアップロードの進行中にスレッドが中断された場合。 この例外がスローされた後でも、バックグラウンドでアップロードは続行されます。
        IllegalArgumentException - timeout0以下の場合、またはunitnullの場合。
      • 始める

        public void start()
        セッションを開始し、Realm Object Server との同期を有効にしようとします。

        これは Realm インスタンスを開くときに自動的に行われるため、手動で実行する必要があるのは、 stop()を使用してセッションが停止された場合のみです。

        セッションがすでに開始されている場合は、このメソッドを呼び出しても何も行われません。

        getState()SyncSession.State.ACTIVEを返す場合、セッションは開始されたと見なされます。 セッションがSyncSession.State.DYINGの場合、セッションはSyncSession.State.ACTIVEに戻されます。

        以下も参照してください。
        getState(), stop()
      • 停止

        public void stop()
        Realm が完全に閉じられた後、再度開かれるまで、Realm オブジェクト サーバーとの同期を停止します。

        同期は、 start()を再度呼び出すことで再度有効にできます。

        セッションがすでに停止している場合は、このメソッドを呼び出しても何も行われません。