ViewModel的目的是保留有关生命周期事件和配置更改的数据。
但是对于某些配置更改,例如语言环境更改,我想获得一个新的 viewModel 实例。我怎样才能强制娱乐?
class HomeActivity : AppCompatActivity() {
var viewModelFactory: ViewModelProvider.Factory
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// How to get new instance on locale change?
var viewModel = ViewModelProviders.of(this, viewModelFactory)
.get(HomeViewModel::class.java)
}
}
最佳答案
回答我自己的问题:)
我有幸在 2019 年 Google I/O 大会上与 Yigit Boyar(架构组件负责人)进行了交谈。
他确认故意不可能在 ViewModel 上强制重新创建。正确的解决方案是观察变化并采取行动。
关于Android ViewModel - 如何强制重新创建某些配置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477523/