它是否根据每个请求正确创建 viewModelscope.launch?

Does it correct create viewModelscope.launch on every request?

我有这样的代码:

class MyViewModel: ViewModel() {

    val myRepository = ExampleRepository()

    init {
        fetchServerRequest()
    }

    fun reload() {
        fetchServerRequest()
    }

    private fun fetchServerRequest() {
        viewModelScope.launch {
            myRepository.fetchServerRequest() //repository returns Flow<String>
                .collect {
                    //handle result
                }
        }
    }
}

存储库 returns 冷流。每次调用此方法时都创建新的协程 c 是否正确?

或者当 collect 中的代码完成时协程将完成?

你做的很好,viewModelScope.launch() 不是创建一个新的 Coroutine,而是创建一个新的 Job,你可以看到 return 类型,如果你把鼠标放在 launch().

Or coroutine will be finished when code in collect will finished?

你可以看看我的另一个post .