【问题标题】:Why we need to extend ```ViewModel()``` for DataBinding and LiveData to create LiveData object为什么我们需要为 DataBinding 和 LiveData 扩展 ```ViewModel()``` 来创建 LiveData 对象
【发布时间】:2021-04-12 13:11:22
【问题描述】:

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

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

【问题讨论】:

  • 您不必这样做,但是 ViewModel 让生活变得更轻松。当设备发生配置更改(例如屏幕旋转)时,ViewModel 可以让您的数据保持活跃。
  • 也许可以看看documentation for ViewModel?

标签: android kotlin android-livedata mutablelivedata


【解决方案1】:

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

您在ViewModel 中声明的任何变量都不会受到配置更改的影响。

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


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

  1. 旋转屏幕

  2. 更改系统语言

  3. 插入物理键盘

  4. 连接到鼠标

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多