fun <T : RealmModel> RealmResults<T>.toFlow(): Flow<RealmResults<T>>
この RealmResults への変更を監視するフローを返します。 サブスクライブすると、現在の RealmResult が出力されます。 RealmResult が更新されるにつれて、RealmResult は継続的に出力されます。 onCompletion
は呼び出されません。
Realm フローから出力されたアイテムは固定されます。 RealmResults.freezeを参照してください。 つまり、これらは不変で、どのスレッドからでも読み取ることができます。
Realm フローは常に、ライブ RealmResult を保持するスレッドから項目を出力します。 つまり、さらに処理が必要な場合は、計算ディスパッチで 値を収集することをお勧めします。
realmInstance.where(Foo::class.java)
.findAllAsync()
.toFlow()
.map { results -> doExpensiveWork(results) }
.flowOn(Dispatchers.IO)
.onEach { flowResults ->
// ...
}.launchIn(Dispatchers.Main)
toFlow()
でアイテムの発行を停止する場合は、 kotlinx.coreoutine.flow.firstを呼び出して、最初のアイテムのみを発行するようにフローに指示できます。
val foo = realmInstance.where(Foo::class.java)
.findAllAsync()
.toFlow()
.flowOn(context)
.first()
ReturnonEach
またはcollect
への呼び出しを実行できる Kotlinフロー。