📜  不推荐使用 viewmodelinject - Kotlin (1)

📅  最后修改于: 2023-12-03 14:48:50.827000             🧑  作者: Mango

不推荐使用 viewmodelinject - Kotlin

在 Android 开发中,ViewModel 是一个非常重要的组件,它可以帮助我们更好地管理 Activity 和 Fragment 的状态信息。为了方便使用,一些开发者开发了一些库,例如 ViewModelInject。然而,我们不推荐使用 ViewModelInject。

什么是 ViewModelInject?

ViewModelInject 这个库是一个 ViewModel 注入库,它可以让你用非常简单的方式初始化和使用 ViewModel。在使用上,你只需要在你的 ViewModel 中使用 @Inject 注解来注入 ViewModelDependencies,然后在你的 Activity 或 Fragment 中直接通过 ViewModelProviders 来获取 ViewModel 即可。

class MyViewModel @Inject constructor(
  private val myDependency: MyDependency
) : ViewModel() {
  //...
}

class MyActivity : AppCompatActivity() {
  private val myViewModel by viewModels<MyViewModel>()

  //...
}
为什么不推荐使用 ViewModelInject?

下面是不推荐使用 ViewModelInject 的原因:

1. 依赖注入框架限制

ViewModelInject 使用的是依赖注入框架,如 Dagger,Koin 等。这限制了你的应用,使你必须使用这个框架,否则你的应用就无法正常工作。

2. 太过庞大

在使用 ViewModelInject 时,你需要额外引入一些其他的库,如 AssistedInject,ViewModel SavedState 等。这些库不仅导致 apk 打包体积增大,还对该库的维护产生了负担。

3. 意义不大

在使用 ViewModelInject 之后,你并没有从整体上获得多大的效益。为了一个 ViewModel 实例,你需要引入一系列的依赖注入框架,这对于一个小的应用程序来说并不是很必要。对于一个大型应用来说,它通常需要使用复杂的依赖注入系统,而 ViewModelInject 不能很好地胜任这些任务。

4. 使用门槛较高

ViewModelInject 本身的使用非常简单,但它的所需的依赖注入框架却不够易用。使用这些框架需要了解一些额外的概念,如 Module、Component 等。对于一个新手来说,这可能不是一个很好的选择。

结论

在考虑使用 ViewModelInject 之前,你需要考虑你应用程序的规模和复杂度。对于小型应用程序来说,我们不推荐使用 ViewModelInject。相反,你应该选择一个更为简单的方式来创建和管理 ViewModel。

我们建议手动创建 ViewModel,或使用 Google 推荐的 ViewModel + LiveData + Repository 等组合来创建和管理 ViewModel。这些组合都是 Google 推荐的,且经过了广泛的测试和使用,用法更加简单,易于维护。同时,这些组合也不需要引入其他的依赖注入框架,使你的应用更加轻量化。