ViewModel和SavedStateHandle
时间: 2024-04-09 20:34:10 浏览: 127
《ViewBinding、DataBinding、ViewModel上手》文章示例
ViewModel和SavedStateHandle是Android Jetpack库中的两个重要组件,用于处理屏幕旋转、后台杀死进程等配置变化时的数据保存和恢复。
ViewModel是一个设计模式,用于将UI的数据和逻辑与UI组件(如Activity、Fragment)解耦。它允许我们在配置变化时保留数据,并且在Activity或Fragment重新创建时恢复数据。ViewModel存储在内存中,因此适合用于保存较大的数据集或长时间加载的数据。
SavedStateHandle是ViewModel的一个辅助类,用于在配置变化时保存和恢复数据。它提供了一个类似Bundle的键值对的存储机制,可以存储和获取数据。SavedStateHandle可以在ViewModel中使用,以便在配置变化时保存和恢复数据。
使用ViewModel和SavedStateHandle的步骤如下:
1. 创建一个继承自ViewModel的类,例如MyViewModel。
2. 在MyViewModel中定义需要保存和恢复的数据。
3. 在Activity或Fragment中获取MyViewModel的实例。
4. 使用ViewModelProvider获取ViewModel实例,并使用get方法获取SavedStateHandle实例。
5. 使用SavedStateHandle实例保存和获取数据。
例如,我们可以在ViewModel中定义一个字符串数据,并使用SavedStateHandle保存和恢复它:
```
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
private val key = "my_key"
fun saveData(data: String) {
savedStateHandle.set(key
阅读全文