我有一個在 Viewmodel 類中初始化的 Kotlin 協程。像這樣的東西
init {
viewModelScope.launch {
person.retrievePersonsWithId(<ID VARIABLE>).collect {
_persons.value = it
}
}
}
這是否<ID VARIABLE>可以根據 UI 進行更改。我想要做的是讓這個 Kotlin 協程持續運行。當 UI 文本更改時,可以更改它,<ID VARIABLE>以便協程自動拾取它,而無需取消上述協程并重新創建一個新協程。
uj5u.com熱心網友回復:
首先,我們需要一種方法來觀察 this 的變化<ID VARIABLE>,最好是另一種 id 流的形式。有多種方法可以創建這樣的流程,這取決于您的具體情況。最簡單的方法之一是將 id 存盤在MutableStateFlow 中:
private val idFlow = MutableStateFlow(<initial value>)
// change ID value:
idFlow.value = 42
我們將其idFlow用作 ID 的來源。然后我們需要使用flatMapLatest重新初始化另一個,retrievePersonsWithId()每當 ID 更改時使用的結果流:
idFlow.flatMapLatest { person.retrievePersonsWithId(it) }.collect {
_persons.value = it
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/405210.html
標籤:
