ViewModel 的生命周期
ViewModel
对象存在的时间范围是获取 ViewModel
时传递给 ViewModelProvider
的 Lifecycle
。ViewModel
将一直留在内存中,直到限定其存在时间范围的 Lifecycle
永久消失:对于 Activity,是在 Activity 完成时;而对于 Fragment,是在 Fragment 分离时。
说明了 Activity 经历屏幕旋转而后结束时所处的各种生命周期状态。该图还在关联的 Activity 生命周期的旁边显示了 ViewModel
的生命周期。此图表说明了 Activity 的各种状态。这些基本状态同样适用于 Fragment 的生命周期。
image.png
使用步骤
1.添加 savedstate 依赖库
2.创建自己的 MyViewModel 继承系统的 ViewModel ,并在构造放在中添加 SavedStateHandle 类型参数。
class MyViewModel (var savedStateHandle: SavedStateHandle) : ViewModel()
3.在创建 ViewModel 的时候需要添加 SavedStateViewModelFactory 作为参数。
ViewModelProvider(this,SavedStateViewModelFactory(application, this)).get(MyViewModel ::class.java)