📅  最后修改于: 2023-12-03 14:48:50.827000             🧑  作者: Mango
在 Android 开发中,ViewModel 是一个非常重要的组件,它可以帮助我们更好地管理 Activity 和 Fragment 的状态信息。为了方便使用,一些开发者开发了一些库,例如 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 使用的是依赖注入框架,如 Dagger,Koin 等。这限制了你的应用,使你必须使用这个框架,否则你的应用就无法正常工作。
在使用 ViewModelInject 时,你需要额外引入一些其他的库,如 AssistedInject,ViewModel SavedState 等。这些库不仅导致 apk 打包体积增大,还对该库的维护产生了负担。
在使用 ViewModelInject 之后,你并没有从整体上获得多大的效益。为了一个 ViewModel 实例,你需要引入一系列的依赖注入框架,这对于一个小的应用程序来说并不是很必要。对于一个大型应用来说,它通常需要使用复杂的依赖注入系统,而 ViewModelInject 不能很好地胜任这些任务。
ViewModelInject 本身的使用非常简单,但它的所需的依赖注入框架却不够易用。使用这些框架需要了解一些额外的概念,如 Module、Component 等。对于一个新手来说,这可能不是一个很好的选择。
在考虑使用 ViewModelInject 之前,你需要考虑你应用程序的规模和复杂度。对于小型应用程序来说,我们不推荐使用 ViewModelInject。相反,你应该选择一个更为简单的方式来创建和管理 ViewModel。
我们建议手动创建 ViewModel,或使用 Google 推荐的 ViewModel + LiveData + Repository 等组合来创建和管理 ViewModel。这些组合都是 Google 推荐的,且经过了广泛的测试和使用,用法更加简单,易于维护。同时,这些组合也不需要引入其他的依赖注入框架,使你的应用更加轻量化。