ViewModel 创建有哪些套路?从手动时代到 Hilt 和 Compose 时代,这篇文章给你全部答案!
2023-09-09 07:47:11
时代一:ViewModel 手动创建时代
在 ViewModel 被正式引入之前,Android 开发人员需要手动创建并管理视图数据。这种方法非常繁琐,容易出错,并且难以维护。
手动创建 ViewModel 的步骤如下:
- 创建一个新的类,并继承自
ViewModel
类。 - 在
ViewModel
类中定义要管理的数据。 - 在
Activity
或Fragment
中创建ViewModel
实例。 - 将
ViewModel
实例与Activity
或Fragment
绑定。 - 在
Activity
或Fragment
中使用ViewModel
实例来获取和更新数据。
这种方法虽然可以工作,但是非常繁琐,而且容易出错。一旦 Activity
或 Fragment
被销毁,ViewModel
实例就会被销毁,从而导致数据丢失。
时代二:ViewModel Dagger 时代
Dagger 是一个依赖注入框架,可以帮助我们管理对象的生命周期和依赖关系。Dagger 时代,ViewModel 的创建方式发生了很大的变化。
Dagger 创建 ViewModel 的步骤如下:
- 在
Activity
或Fragment
中定义一个ViewModel
字段。 - 在
Activity
或Fragment
的onCreate()
方法中,使用ViewModelProvider
获取ViewModel
实例。 - 将
ViewModel
实例与Activity
或Fragment
绑定。 - 在
Activity
或Fragment
中使用ViewModel
实例来获取和更新数据。
Dagger 管理着 ViewModel
的生命周期,并确保它不会被销毁。这使得 ViewModel 更加稳定和可靠。
时代三:ViewModel Hilt 时代
Hilt 是一个基于 Dagger 的代码生成库,可以简化依赖注入的过程。Hilt 时代,ViewModel 的创建方式再次发生了变化。
Hilt 创建 ViewModel 的步骤如下:
- 在
Activity
或Fragment
中添加@AndroidEntryPoint
注解。 - 在
Activity
或Fragment
中定义一个ViewModel
字段,并添加@Inject
注解。 - 在
Activity
或Fragment
的onCreate()
方法中,使用ViewModelProvider
获取ViewModel
实例。 - 将
ViewModel
实例与Activity
或Fragment
绑定。 - 在
Activity
或Fragment
中使用ViewModel
实例来获取和更新数据。
Hilt 会自动生成 ViewModelProvider
实例,并将其注入到 Activity
或 Fragment
中。这使得 ViewModel 的创建过程更加简单和便捷。
时代四:ViewModel Compose 时代
Compose 是一个用于构建原生 Android UI 的现代工具包。Compose 时代,ViewModel 的创建方式又发生了一些变化。
Compose 创建 ViewModel 的步骤如下:
- 在
Activity
或Fragment
中定义一个ViewModel
字段。 - 在
Activity
或Fragment
的onCreate()
方法中,使用ViewModelProvider
获取ViewModel
实例。 - 将
ViewModel
实例与Activity
或Fragment
绑定。 - 在
Activity
或Fragment
中使用ViewModel
实例来获取和更新数据。
Compose 提供了一种新的方式来创建和管理 ViewModel
,使其更加紧密地集成到 Compose 的体系结构中。
总结
从手动创建到 Hilt 和 Compose 时代,ViewModel 的创建方式经历了很大的变化。这些变化使 ViewModel 变得更加稳定、可靠和易于使用。
在本文中,我们总结了 ViewModel 创建的所有套路,从入门到精通,一步一步带你掌握 ViewModel 的创建技巧。希望本文能够对您的 Android 开发有所帮助。