返回
ViewModel:如何在屏幕旋转时拯救数据
Android
2023-12-25 07:04:56
ViewModel:旋转屏幕时的救星
在Android应用开发中,ViewModel是一个类,用于在配置更改时保留数据,例如旋转屏幕。它与Activity或Fragment的生命周期无关,因此即使宿主重建,ViewModel仍能安全地保留数据。
让ViewModel经受住旋转风暴
为了让ViewModel在Activity发生旋转时保留数据,必须确保ViewModelStore不会随着宿主一起重建。ViewModelStore是存储ViewModel的地方,它是在Activity启动过程中创建的。
那么,ViewModelStore是什么时候保存的呢?在Activity启动过程中,当ActivityThread执行performDestroyActivity方法时,ViewModelStore会被保存到Bundle中。当Activity重建时,这个Bundle会被重新加载,ViewModelStore也会随之恢复。
使用ViewModelStore,轻松保留数据
下面是一个使用ViewModelStore保留数据的简单示例:
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable("viewModelStore", viewModelStore)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
super.onRestoreInstanceState(savedInstanceState)
viewModelStore = savedInstanceState?.getParcelable("viewModelStore")
}
通过在onSaveInstanceState中保存ViewModelStore,并在onRestoreInstanceState中恢复它,可以确保ViewModel在旋转屏幕时保留数据。
结论
ViewModel是Android开发中一个强大的工具,它可以通过ViewModelStore轻松地保留数据,即使在旋转屏幕时也是如此。通过遵循本文中概述的步骤,开发人员可以确保他们的应用在各种配置更改中保持数据完整性。