我正在从外部 API 获取数据。在 ViewModel 类中,我收集如下数据:
private val state: MutableState<Resource<List<Item>>> = mutableStateOf(Resource(emptyList()))
viewModelScope.launch {
repository.getItems().collect { resource ->
state.value = resource
}
}
在我使用的活动类中:
val resource = viewModel.state.value
when(resource) {
is Resource.Loading -> Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
CircularProgressIndicator() // Starts spinning
}
is Resource.Success -> LazyColumn {
items(
resource.data
) { item ->
ItemCard(item = item)
}
}
is Resource.Failure -> Text(
text = resource.message,
)
}
一旦资源开始加载,进度条就会开始旋转。一旦我得到数据,当资源成功时,它会显示在 CardView 中并且进度条停止旋转。我从来没有在我的代码中添加阻止它旋转的东西。这怎么可能?它是否仍然处于活动状态(旋转)并且我需要以编程方式自行停止它,还是自动停止?如何处理这种情况?