为什么我们需要为 DataBinding 和 LiveData 扩展 ```ViewModel()``` 来创建 LiveData 对象

Why we need to extend ```ViewModel()``` for DataBinding and LiveData to create LiveData object

无需扩展 ViewModel() 只需使用简单的 class 我就能实现 LiveData 和 DataBinding 示例,但我在 google 开发人员文档中展示了扩展 ViewModel() 以创建对象LiveData.So 为什么我们需要扩展它?

https://developer.android.com/topic/libraries/architecture/livedata

如果您在 FragmentActivity 中创建了一个变量,例如 var a = 10,然后您将它更改到某处(例如:单击按钮),现在它变为 50 ,然后旋转屏幕(称为 配置更改),您会注意到 a 再次变为 10。有时听起来很烦人吧? ViewModel就是为了解决这个问题而设计的。

Any variable you declare inside ViewModel will not be affected by Configuration Change.

当然,您必须从 ViewModelAndroidViewModel 扩展(继承)您的 class 才能获得此能力。但是如果你不需要这个功能,你不需要扩展它们。


以下显示了将导致配置更改的情况:

  1. 旋转屏幕

  2. 更改系统语言

  3. 插入物理键盘

  4. 已连接鼠标

要点:配置更改后,将重新创建Activity,因此数据可能会丢失。