클래스 SyncSession


  • public class SyncSession
    extends Object
    세션은 장치의 단일 Realm과 Realm 객체 서버의 서버 Realm 간에 데이터가 동기화되는 방식을 제어합니다.

    세션은 SyncConfiguration 를 사용하여 Realm 인스턴스를 열어 생성됩니다. 세션이 생성되면 앱을 닫거나 이 SyncConfiguration 를 사용하는 모든 스레드가 해당 Realm을(를) 닫을 때까지 세션이 계속 존재합니다.

    세션은 Realm에서 제어하지만 오류 발생 시 추가 정보를 제공할 수 있습니다. 이러한 오류는 SyncSession.ErrorHandler 에 전달됩니다.

    세션을 만들 때 Realm은 서버에 대한 연결을 설정합니다. 이 연결은 Realm에서 제어하며 여러 세션 간에 공유될 수 있습니다. addConnectionChangeListener(ConnectionListener)isConnected() 을 사용하여 연결에 대한 인사이트를 얻을 수 있습니다.

    세션 자체는 기본 연결과 라이프사이클이 다릅니다. 세션의 상태는 getState() 을(를) 사용하여 찾을 수 있습니다.

    SyncSession 객체는 스레드로부터 안전합니다.

    • 메서드 세부 정보

      • getConfiguration

        공개 SyncConfiguration getConfiguration()
        세션 제어를 담당하는 SyncConfiguration 를 반환합니다.
        반환합니다:
        이 세션을 정의하고 제어하는 SyncConfiguration입니다.
      • getUser

        공개 사용자 getUser()
        MongoDB Realm에 연결하는 데 사용되는 SyncConfiguration 에서 User 정의한 을 반환합니다.
        반환합니다:
        User MongoDB Realm에서 세션을 인증하는 데 사용됩니다.
      • getServerUrl

        공개 URI getServerUrl()
        이 세션이 연결되고 변경 사항을 동기화하는 원격 Realm을 설명하는 URI 을 반환합니다.
        반환합니다:
        URI 원격 Realm을 설명합니다.
      • getState

        공개 SyncSession.State getState()
        SyncSession.State 에 정의된 대로 현재 세션의 상태를 가져옵니다.

        이 메서드가 반환된 후 상태가 변경될 수 있습니다.

        반환합니다:
        세션의 상태입니다.
        다음도 참조하세요.
        SyncSession.State
      • getConnectionState

        공개 ConnectionState getConnectionState()
        ConnectionState 에 정의된 대로 세션에서 사용하는 연결의 현재 상태를 가져옵니다.
        반환합니다:
        세션에서 사용하는 연결 상태입니다.
        다음도 참조하세요.
        ConnectionState
      • isConnected

        공개 부울 isConnected()
        세션이 서버에 연결되어 있고 데이터를 동기화할 수 있는지 확인합니다. 이것은 가장 좋은 추측입니다. 배터리를 절약하기 위해 기본 구현은 하트비트를 사용하여 연결이 여전히 사용 가능한지 감지합니다. 따라서 활발하게 동기화되는 데이터가 없고 마지막 하트비트 이후 시간이 경과한 경우 연결이 끊어질 수 있었지만 이 메서드는 여전히 true 을 반환합니다.
        반환합니다:
        true 세션이 연결되어 데이터를 동기화할 준비가 되면 false 이 반환되고, 그렇지 않거나 연결 진행 중이면 이 반환됩니다.
      • addDownloadProgressListener

        public void addDownloadProgressListener​(ProgressMode mode,
                                                ProgressListener listener)
        Realm 객체 서버에서 다운로드해야 하는 변경 사항을 추적하는 진행 리스너를 추가합니다.

        ProgressListener 는 등록 시 즉시 트리거되며, 그 이후에는 주기적으로 트리거됩니다.

        매개변수:
        mode - 사용된 모드 유형입니다. 자세한 내용은 ProgressMode 를 참조하세요.
        listener - 등록할 리스너입니다.
      • addUploadProgressListener

        public void addUploadProgressListener​(ProgressMode mode,
                                              ProgressListener listener)
        장치에서 Realm 객체 서버로 업로드해야 하는 변경 사항을 추적하는 진행 리스너를 추가합니다.

        ProgressListener 는 등록 시 즉시 트리거되며, 그 이후에는 주기적으로 트리거됩니다.

        매개변수:
        mode - 사용된 모드 유형입니다. 자세한 내용은 ProgressMode 를 참조하세요.
        listener - 등록할 리스너입니다.
      • removeProgressListener

        public void removeProgressListener​(ProgressListener listener)
        진행률 리스너를 제거합니다. 리스너가 등록되지 않은 경우 이 메서드는 아무 작업도 수행하지 않습니다.
        매개변수:
        listener - 제거할 리스너입니다.
      • addConnectionChangeListener

        public void addConnectionChangeListener​(ConnectionListener listener)
        이 세션을 지원하는 연결에 변경 사항을 추적하는 수신기를 추가합니다. 자세한 내용은 ConnectionState 를 참조하세요.
        매개변수:
        listener - 등록할 리스너입니다.
        예외 처리:
        IllegalArgumentException - 리스너가 null 인 경우
        다음도 참조하세요.
        ConnectionState
      • downloadAllServerChanges

        public void downloadAllServerChanges()
                                      throws InterruptedException
        이 메서드를 호출하면 알려진 모든 원격 변경 사항이 다운로드되어 Realm에 적용될 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.

        장치가 오프라인 상태인 경우 이 메서드가 반환되지 않을 수 있습니다.

        이 메서드는 세션이 시작되기 전에는 호출할 수 없습니다.

        예외 처리:
        IllegalStateException - Android 메인 스레드에서 호출된 경우.
        InterruptedException - 다운로드가 진행되는 동안 스레드가 중단된 경우.
      • downloadAllServerChanges

        공개 부울 downloadAllServerChanges​(긴 시간 제한,
                                                TimeUnit 단위)에서 InterruptedException이 발생합니다.
        이 메서드를 호출하면 알려진 모든 원격 변경 사항이 Realm에 다운로드되어 적용되거나 지정된 시간 제한에 도달할 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.

        이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.

        반환합니다:
        true 시간 초과 전에 데이터가 다운로드된 경우. 작업 시간이 초과되었거나 실패한 경우 false 입니다.
        예외 처리:
        IllegalStateException - Android 메인 스레드에서 호출된 경우.
        InterruptedException - 다운로드가 지정된 제한 시간보다 오래 걸리거나 다운로드가 진행되는 동안 스레드가 중단된 경우. 이 예외가 발생한 후에도 백그라운드에서 다운로드가 계속됩니다.
        IllegalArgumentException - timeout0 보다 작거나 같거나 unitnull 인 경우
      • UploadAllLocalChanges

        public void uploadAllLocalChanges()
                                   throws InterruptedException
        이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드될 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.

        장치가 오프라인 상태인 경우 이 메서드가 반환되지 않을 수 있습니다.

        이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.

        예외 처리:
        IllegalStateException - Android 메인 스레드에서 호출된 경우.
        InterruptedException - 다운로드가 진행되는 동안 스레드가 중단된 경우.
      • UploadAllLocalChanges

        공개 부울 UploadAllLocalChanges​(긴 시간 제한,
                                             TimeUnit 단위)에서 InterruptedException이 발생합니다.
        이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드되거나 지정된 시간 제한에 도달할 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.

        이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.

        반환합니다:
        true 제한 시간 전에 데이터가 업로드된 경우. 작업 시간이 초과되었거나 실패한 경우 false 입니다.
        예외 처리:
        IllegalStateException - Android 메인 스레드에서 호출된 경우.
        InterruptedException - 업로드가 지정된 제한 시간보다 오래 걸리거나 업로드가 진행되는 동안 스레드가 중단된 경우. 이 예외가 발생한 후에도 업로드는 백그라운드에서 계속됩니다.
        IllegalArgumentException - timeout0 보다 작거나 같거나 unitnull 인 경우
      • 시작하기

        public void start()
        세션을 시작하고 Realm 객체 서버와의 동기화를 활성화하려고 시도합니다.

        이는 Realm 인스턴스를 열 때 자동으로 수행되므로 stop() 사용하여 세션을 중지한 경우에만 수동으로 수행해야 합니다.

        세션이 이미 시작된 경우 이 메서드를 호출해도 아무 소용이 없습니다.

        getState()SyncSession.State.ACTIVE 을 반환하면 세션이 시작된 것으로 간주됩니다. 세션이 SyncSession.State.DYING 인 경우 세션은 SyncSession.State.ACTIVE 로 다시 이동합니다.

        다음도 참조하세요.
        getState(), stop()
      • 중지

        public void stop()
        Realm을 완전히 닫았다가 다시 열 때까지 Realm 객체 서버와의 동기화를 중지합니다.

        start() 를 다시 호출하여 동기화를 다시 활성화할 수 있습니다.

        세션이 이미 중지된 경우 이 메서드를 호출해도 아무 작업도 수행되지 않습니다.