클래스 SyncSession
- java.lang.Object
-
- io.realm.mongodb.sync.SyncSession
-
public class SyncSession extends Object
세션은 장치의 단일 Realm과 Realm 객체 서버의 서버 Realm 간에 데이터가 동기화되는 방식을 제어합니다.세션은
SyncConfiguration
를 사용하여 Realm 인스턴스를 열어 생성됩니다. 세션이 생성되면 앱을 닫거나 이SyncConfiguration
를 사용하는 모든 스레드가 해당Realm
을(를) 닫을 때까지 세션이 계속 존재합니다.세션은 Realm에서 제어하지만 오류 발생 시 추가 정보를 제공할 수 있습니다. 이러한 오류는
SyncSession.ErrorHandler
에 전달됩니다.세션을 만들 때 Realm은 서버에 대한 연결을 설정합니다. 이 연결은 Realm에서 제어하며 여러 세션 간에 공유될 수 있습니다.
addConnectionChangeListener(ConnectionListener)
및isConnected()
을 사용하여 연결에 대한 인사이트를 얻을 수 있습니다.세션 자체는 기본 연결과 라이프사이클이 다릅니다. 세션의 상태는
getState()
을(를) 사용하여 찾을 수 있습니다.SyncSession
객체는 스레드로부터 안전합니다.
-
-
중첩된 클래스 요약
중첩된 클래스 수정자 및 유형 클래스 설명 static interface
SyncSession.ClientResetHandler
더 이상 사용되지 않습니다.static interface
SyncSession.ErrorHandler
세션 오류를 보고하는 데 사용되는 인터페이스입니다.static class
SyncSession.State
SyncSession의 상태를 설명하는 열거형입니다.
-
메서드 요약
모든 메서드 인스턴스 메서드 구체적인 방법 수정자 및 유형 메서드 설명 void
addConnectionChangeListener(ConnectionListener listener)
이 세션을 지원하는 연결에 변경 사항을 추적하는 수신기를 추가합니다.void
addDownloadProgressListener(ProgressMode mode, ProgressListener listener)
Realm 객체 서버에서 다운로드해야 하는 변경 사항을 추적하는 진행 리스너를 추가합니다.void
addUploadProgressListener(ProgressMode mode, ProgressListener listener)
장치에서 Realm 객체 서버로 업로드해야 하는 변경 사항을 추적하는 진행 리스너를 추가합니다.void
downloadAllServerChanges()
이 메서드를 호출하면 알려진 모든 원격 변경 사항이 다운로드되어 Realm에 적용될 때까지 차단됩니다.boolean
downloadAllServerChanges(long timeout, TimeUnit unit)
이 메서드를 호출하면 알려진 모든 원격 변경 사항이 Realm에 다운로드되어 적용되거나 지정된 시간 제한에 도달할 때까지 차단됩니다.SyncConfiguration
getConfiguration()
세션 제어를 담당하는SyncConfiguration
를 반환합니다.ConnectionState
getConnectionState()
ConnectionState
에 정의된 대로 세션에서 사용하는 연결의 현재 상태를 가져옵니다.URI
getServerUrl()
이 세션이 연결되고 변경 사항을 동기화하는 원격 Realm을 설명하는URI
을 반환합니다.SyncSession.State
getState()
SyncSession.State
에 정의된 대로 현재 세션의 상태를 가져옵니다.User
getUser()
MongoDB Realm에 연결하는 데 사용되는SyncConfiguration
에서User
정의한 을 반환합니다.boolean
isConnected()
세션이 서버에 연결되어 있고 데이터를 동기화할 수 있는지 확인합니다.void
removeConnectionChangeListener(ConnectionListener listener)
이전에 등록된ConnectionListener
을 제거합니다.void
removeProgressListener(ProgressListener listener)
진행률 리스너를 제거합니다.void
start()
세션을 시작하고 Realm 객체 서버와의 동기화를 활성화하려고 시도합니다.void
stop()
Realm을 완전히 닫았다가 다시 열 때까지 Realm 객체 서버와의 동기화를 중지합니다.void
uploadAllLocalChanges()
이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드될 때까지 차단됩니다.boolean
uploadAllLocalChanges(long timeout, TimeUnit unit)
이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드되거나 지정된 시간 제한에 도달할 때까지 차단됩니다.
-
-
-
메서드 세부 정보
-
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
-
removeConnectionChangeListener
public void removeConnectionChangeListener(ConnectionListener listener)
이전에 등록된ConnectionListener
을 제거합니다.- 매개변수:
listener
- 제거할 리스너- 예외 처리:
IllegalArgumentException
- 리스너가null
인 경우
-
downloadAllServerChanges
public void downloadAllServerChanges() throws InterruptedException
이 메서드를 호출하면 알려진 모든 원격 변경 사항이 다운로드되어 Realm에 적용될 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.장치가 오프라인 상태인 경우 이 메서드가 반환되지 않을 수 있습니다.
이 메서드는 세션이 시작되기 전에는 호출할 수 없습니다.
- 예외 처리:
IllegalStateException
- Android 메인 스레드에서 호출된 경우.InterruptedException
- 다운로드가 진행되는 동안 스레드가 중단된 경우.
-
downloadAllServerChanges
공개 부울 downloadAllServerChanges(긴 시간 제한, TimeUnit 단위)에서 InterruptedException이 발생합니다.
이 메서드를 호출하면 알려진 모든 원격 변경 사항이 Realm에 다운로드되어 적용되거나 지정된 시간 제한에 도달할 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.
- 반환합니다:
true
시간 초과 전에 데이터가 다운로드된 경우. 작업 시간이 초과되었거나 실패한 경우false
입니다.- 예외 처리:
IllegalStateException
- Android 메인 스레드에서 호출된 경우.InterruptedException
- 다운로드가 지정된 제한 시간보다 오래 걸리거나 다운로드가 진행되는 동안 스레드가 중단된 경우. 이 예외가 발생한 후에도 백그라운드에서 다운로드가 계속됩니다.IllegalArgumentException
-timeout
가0
보다 작거나 같거나unit
가null
인 경우
-
UploadAllLocalChanges
public void uploadAllLocalChanges() throws InterruptedException
이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드될 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.장치가 오프라인 상태인 경우 이 메서드가 반환되지 않을 수 있습니다.
이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.
- 예외 처리:
IllegalStateException
- Android 메인 스레드에서 호출된 경우.InterruptedException
- 다운로드가 진행되는 동안 스레드가 중단된 경우.
-
UploadAllLocalChanges
공개 부울 UploadAllLocalChanges(긴 시간 제한, TimeUnit 단위)에서 InterruptedException이 발생합니다.
이 메서드를 호출하면 알려진 모든 로컬 변경 사항이 서버에 업로드되거나 지정된 시간 제한에 도달할 때까지 차단됩니다. 여기에는 네트워크 액세스가 포함되므로 이 메서드 호출은 UI가 아닌 스레드에서만 수행해야 합니다.이 메서드는 Realm이 열기 전에는 호출할 수 없습니다.
- 반환합니다:
true
제한 시간 전에 데이터가 업로드된 경우. 작업 시간이 초과되었거나 실패한 경우false
입니다.- 예외 처리:
IllegalStateException
- Android 메인 스레드에서 호출된 경우.InterruptedException
- 업로드가 지정된 제한 시간보다 오래 걸리거나 업로드가 진행되는 동안 스레드가 중단된 경우. 이 예외가 발생한 후에도 업로드는 백그라운드에서 계속됩니다.IllegalArgumentException
-timeout
가0
보다 작거나 같거나unit
가null
인 경우
-
시작하기
public void start()
세션을 시작하고 Realm 객체 서버와의 동기화를 활성화하려고 시도합니다.이는 Realm 인스턴스를 열 때 자동으로 수행되므로
stop()
사용하여 세션을 중지한 경우에만 수동으로 수행해야 합니다.세션이 이미 시작된 경우 이 메서드를 호출해도 아무 소용이 없습니다.
getState()
가SyncSession.State.ACTIVE
을 반환하면 세션이 시작된 것으로 간주됩니다. 세션이SyncSession.State.DYING
인 경우 세션은SyncSession.State.ACTIVE
로 다시 이동합니다.- 다음도 참조하세요.
getState()
,stop()
-
중지
public void stop()
Realm을 완전히 닫았다가 다시 열 때까지 Realm 객체 서버와의 동기화를 중지합니다.start()
를 다시 호출하여 동기화를 다시 활성화할 수 있습니다.세션이 이미 중지된 경우 이 메서드를 호출해도 아무 작업도 수행되지 않습니다.
-
-