방식 Flow
쿼리 조건을 충족하는 첫 번째 객체에 대한 변경 사항을 관찰합니다. 흐름은 쿼리가 나타내는 첫 번째 객체가 변경될 때 SingleQueryChange 이벤트를 내보냅니다. 흐름은 취소될 때까지 무기한으로 계속 실행됩니다.
빈 쿼리를 구독하면 흐름은 쿼리가 비어 있음을 알리는 PendingObject 이벤트를 발생한 다음 첫 번째 요소에 대해 InitialObject 이벤트를 생성합니다. 비어 있지 않은 목록에서는 첫 번째 요소에 대한 InitialObject 이벤트를 방출하기 시작합니다.
구독하고 InitialObject 이벤트가 관찰되면 첫 번째 요소가 수정되면 순차적인 UpdatedObject 인스턴스가 관찰됩니다. 요소가 삭제되면 DeletedObject가 생성됩니다.
첫 번째 요소가 새 값으로 대체되면 초기 객체는 새 헤드 에 대해 양보되고 모든 변경 사항에 대해 업데이트된 객체가 따릅니다.
┌───────┐
┌─────┤ Start ├───┐
│ └───────┘ ├────┐──────────┬─────┐
┌───────▼───────┐ ┌───────▼────┴──┐ ┌─────┴─────▼───┐
│ PendingObject ├─► InitialObject │ │ UpdatedObject │
└───────────────┘ └───────▲───────┘ └───────────┬───┘
│ ┌───────────────┐ │
└──► DeletedObject ◄──┘
└───────────────┘
변경 계산은 RealmConfiguration.Builder.notificationDispatcher가 나타내는 스레드에서 실행 됩니다.
흐름에는 Channel.BUFFERED 의 내부 버퍼가 있지만 소비자가 적시에 요소를 소비하지 못하면 코루틴 범위가 CancellationException과 함께 취소됩니다.
Return
이 쿼리 를 실행 한 결과 RealmObject 또는 EmbeddedRealmObject에 대한 변경 사항을 나타내는 흐름입니다.
매개변수
객체를 변경하면 변경 사항이 내보내지는 시기를 정의하는 속성의 선택적 목록입니다. 중첩된 속성은 점 구문을 사용하여 정의할 수 있습니다. parent.child.name
. 키 경로가 제공되지 않은 경우 모든 최상위 속성과 중첩된 속성을 4 수준 아래로 변경하면 변경 사항이 trigger 됩니다.
스로우
잘못된 키 경로가 제공된 경우.