返回

ViewModel 创建有哪些套路?从手动时代到 Hilt 和 Compose 时代,这篇文章给你全部答案!

Android

时代一:ViewModel 手动创建时代

在 ViewModel 被正式引入之前,Android 开发人员需要手动创建并管理视图数据。这种方法非常繁琐,容易出错,并且难以维护。

手动创建 ViewModel 的步骤如下:

  1. 创建一个新的类,并继承自 ViewModel 类。
  2. ViewModel 类中定义要管理的数据。
  3. ActivityFragment 中创建 ViewModel 实例。
  4. ViewModel 实例与 ActivityFragment 绑定。
  5. ActivityFragment 中使用 ViewModel 实例来获取和更新数据。

这种方法虽然可以工作,但是非常繁琐,而且容易出错。一旦 ActivityFragment 被销毁,ViewModel 实例就会被销毁,从而导致数据丢失。

时代二:ViewModel Dagger 时代

Dagger 是一个依赖注入框架,可以帮助我们管理对象的生命周期和依赖关系。Dagger 时代,ViewModel 的创建方式发生了很大的变化。

Dagger 创建 ViewModel 的步骤如下:

  1. ActivityFragment 中定义一个 ViewModel 字段。
  2. ActivityFragmentonCreate() 方法中,使用 ViewModelProvider 获取 ViewModel 实例。
  3. ViewModel 实例与 ActivityFragment 绑定。
  4. ActivityFragment 中使用 ViewModel 实例来获取和更新数据。

Dagger 管理着 ViewModel 的生命周期,并确保它不会被销毁。这使得 ViewModel 更加稳定和可靠。

时代三:ViewModel Hilt 时代

Hilt 是一个基于 Dagger 的代码生成库,可以简化依赖注入的过程。Hilt 时代,ViewModel 的创建方式再次发生了变化。

Hilt 创建 ViewModel 的步骤如下:

  1. ActivityFragment 中添加 @AndroidEntryPoint 注解。
  2. ActivityFragment 中定义一个 ViewModel 字段,并添加 @Inject 注解。
  3. ActivityFragmentonCreate() 方法中,使用 ViewModelProvider 获取 ViewModel 实例。
  4. ViewModel 实例与 ActivityFragment 绑定。
  5. ActivityFragment 中使用 ViewModel 实例来获取和更新数据。

Hilt 会自动生成 ViewModelProvider 实例,并将其注入到 ActivityFragment 中。这使得 ViewModel 的创建过程更加简单和便捷。

时代四:ViewModel Compose 时代

Compose 是一个用于构建原生 Android UI 的现代工具包。Compose 时代,ViewModel 的创建方式又发生了一些变化。

Compose 创建 ViewModel 的步骤如下:

  1. ActivityFragment 中定义一个 ViewModel 字段。
  2. ActivityFragmentonCreate() 方法中,使用 ViewModelProvider 获取 ViewModel 实例。
  3. ViewModel 实例与 ActivityFragment 绑定。
  4. ActivityFragment 中使用 ViewModel 实例来获取和更新数据。

Compose 提供了一种新的方式来创建和管理 ViewModel,使其更加紧密地集成到 Compose 的体系结构中。

总结

从手动创建到 Hilt 和 Compose 时代,ViewModel 的创建方式经历了很大的变化。这些变化使 ViewModel 变得更加稳定、可靠和易于使用。

在本文中,我们总结了 ViewModel 创建的所有套路,从入门到精通,一步一步带你掌握 ViewModel 的创建技巧。希望本文能够对您的 Android 开发有所帮助。