kotlin-extensions / io.realm.kotlin / io.realm.RealmList / toChangesetFlow

to ChangesetFlow

fun <T> RealmList<T>.toChangesetFlow(): Flow<CollectionChange<RealmList<T>>>

この RealmList への変更を監視するフローを返します。 サブスクライブ時に現在の RealmList が発行されます。 RealmList への更新ごとに、RealmList とそれに対応する OrderedCollectionchangeSet とのペアで構成される CollectionCheck が送信されます。RealmList が初めて発行されるときに、変更セットはnullになります。

RealmList は更新されるたびに継続的に出力されます。 このフローは完了しません。

出力される項目は固定されます( RealmList.freezeを参照)。 つまり、これらは不変で、どのスレッドでも読み取ることができます。

Realm フローは常に、ライブ Realm を保持するスレッドからアイテムを出力します。 つまり、さらに処理が必要な場合は、計算ディスパッチで 値を収集することをお勧めします。

list.toChangesetFlow()
  .map { change -> doExpensiveWork(change) }
  .flowOn(Dispatchers.IO)
  .onEach { change ->
    // ...
  }.launchIn(Dispatchers.Main)

toChangesetFlow()でアイテムの発行を停止する場合は、 kotlinx.coreoutine.flow.firstを呼び出して、最初のアイテムのみを発行するようにフローに指示できます。

val foo = list.toChangesetFlow()
  .flowOn(context)
  .first()

例外

UnsupportedOperationException - 必要なコルーチン フレームワークがクラスパスにない場合、または対応する Realm インスタンスがフローをサポートしていない場合。

IllegalStateException - Realm が Double スレッドで開かれていない場合。

Return
完了しない Kotlinフロー