安卓、科特林
我的数据源类中有以下实时数据,我无法将其更改为 StateFlow,因此需要在我的 viewModel 中将其转换为 StateFlow
val trackingCatalogInitialLoadLiveData: LiveData<Pair<CatalogTracking, Int>> by lazy {
instantSearchDataSourceLiveData.switchMap { instantSearchDataSource ->
instantSearchDataSource.initialLoadLiveData
}
}
在我的 ViewModel 中,我有以下内容,这是我不确定这是否是将 LiveData 转换为 StateFlow 的正确方法的部分:
val trackingCatalogInitialLoadStateFlow: StateFlow<Pair<CatalogTracking, Int>> by lazy {
instantSearchDataSourceFactory.trackingCatalogInitialLoadLiveData.asFlow()
.stateIn(viewModelScope, SharingStarted.Lazily, Pair(CatalogTracking(), 0))
}
然后在我的片段中,我只收集结果
coroutineScope.launch {
mInstantSearchViewModel.trackingCatalogInitialLoadStateFlow.collect { trackingPair ->
// code here
}
这是将 LiveData 转换为 StateFlow 的最佳实践吗?有什么我应该注意的吗?