fun <T : RealmModel> T?.toChangesetFlow(): Flow<ObjectChange<T>?>
この RealmObject への変更を監視するフローを返します。 サブスクライブ時に現在の RealmObject が発行されます。 RealmObject への更新ごとに、 RealmObjectとそれに対応するObject ChangeSetとのペアで構成される Object Change が送信されます。 RealmObject が初めて発行されるときに、変更セットはnull
になります。
RealmObject は更新されると継続的に出力されます。 このフローは完了しません。
出力される項目は固定されます( RealmObject.freezeを参照)。 つまり、これらは不変で、どのスレッドでも読み取ることができます。
Realm フローは常に、ライブ Realm を保持するスレッドからアイテムを出力します。 つまり、さらに処理が必要な場合は、計算ディスパッチで 値を収集することをお勧めします。
object.toChangesetFlow()
.map { change -> doExpensiveWork(change) }
.flowOn(Dispatchers.IO)
.onEach { change ->
// ...
}.launchIn(Dispatchers.Main)
toChangesetFlow()
でアイテムの発行を停止する場合は、 kotlinx.coreoutine.flow.firstを呼び出して、最初のアイテムのみを発行するようにフローに指示できます。
val foo = object.toChangesetFlow()
.flowOn(context)
.first()
UnsupportedOperationException
- 必要なコルーチン フレームワークがクラスパスにない場合、または対応する Realm インスタンスがフローをサポートしていない場合。
IllegalStateException
- Realm が Double スレッドで開かれていない場合。
Return
完了しない Kotlinフロー。