假设我们有一个简单的片段,其视图基于StateFlow
视图模型中保存的 UI 状态。我们onCreate()
通常收集状态:
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launchWhenStarted {
viewModel.uiState.collect {
// UI update according to state
}
}
}
现在我们导航到下一个片段 - 前一个片段由片段管理器保存,但视图被销毁。在新的片段上,我们弹回堆栈,现在令人惊讶的是:前一个片段正在重新创建初始状态的视图,即使我们尝试更新状态流也不会发生任何事情,因为它不会一个接一个地发出两次相同的数据。
那么,返回fragment后如何恢复视图状态呢?