Ma2*_*340 1 android kotlin android-livedata kotlin-coroutines
到目前为止,我一直在使用Flow并将其映射到LiveData如下所示 -
看起来MyService像这样——
override fun provideData(action: MyAction) = flow {
emit(MyResult.Loading)
emit(dataRepository.getNewData())
}
Run Code Online (Sandbox Code Playgroud)
看起来ViewModel像这样——
fun getData() = myService.provideData(MyAction.GetData).map {
}.asLiveData(Dispatchers.Default + viewModelScope.coroutineContext)
Run Code Online (Sandbox Code Playgroud)
我想搬到StateFlow. 我怎样才能emit像StateFlow使用Flow.
您可以像以前一样编写流程,但替换.asLiveData(scope)为以获取在相应范围内运行的.stateIn(scope, SharingStarted.Eagerly, null)实例,其行为与您在立即启动 \xe2\x80\x94 共享之前获得的行为类似,并且初始值为(就像)。StateFlowLiveDatanullLiveData
stateIn您可以在此处阅读此处,了解所有运算符参数的更多详细信息和说明https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/state-in.html
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |