android - 当 Koin 可用时,我为什么要使用 Android Hilt (Dagger2)

标签 android koin dagger-hilt

我希望将我的 Android 应用程序中使用的第三方库的数量保持在最低限度。
我已经开始使用 Dagger2 ,然后切换到 Koin .KoinDagger2 有这么大的改进吗? .Koin具有内置的 ViewModel 支持,并且不需要为 Workers 提供任何“额外”的东西。Koin让您以最小的努力在任何地方注入(inject)任何东西,非常棒。
在 Android Hilt 公告中,我完成了一次评估以评估它,因为它会减少我对 3rd 方库的依赖。
完成我的秒杀工作后,我不明白为什么有人会使用 Hilt。
例如:
对于 Koin注入(inject) Worker我有 worker 工具 KoinComponent , 对于 Hilt要注入(inject) worker ,我需要禁用默认 WorkerManager初始化,并使用两个注解 @WorkerInject & @Assisted .
我错过了什么吗?

最佳答案

我认为您已经部分回答了您的问题:On the Android Hilt announcement I completed a spike to evaluate it, as it would reduce my dependencies on 3rd party libraries.但为了帮助您做出更多决定,我们将尝试在下面列出 Koin 和 Hilt 的一些建议。
Koin :

  • 全部用 Kotlin 编写, super 易学,对开发人员友好,与 manual dependency injection 非常相似.
  • 它是一个轻量级的 DSL 依赖注入(inject)框架,用 service locator pattern 编写。 .
  • 不使用注释,这意味着不生成代码,这有助于提高构建速度。
  • 使用范围来管理 android 组件的生命周期。
  • 在运行时解决依赖关系,因为它们是延迟加载的,这可能会导致应用程序稍后出现 RuntimeException。

  • Hilt :
  • 建立在 Dagger 之上,dependency injection 的标准框架,并正式推荐用于android开发。
  • 使用注解生成代码。官方注释cheat sheet来帮助你。
  • 它知道 android 组件的生命周期。
  • 如果你对 Dagger 有基本的了解,那么学习 Hilt 会很容易。
  • Hilt 在编译时解决依赖关系,这意味着它有助于构建时的正确性。

  • 在 Koin 和 Hilt 之间进行选择取决于给定场景的多个因素,两者都有其明显的优点和缺点。For example :
    正如您所说,您已经在 Koin 中编写了您的项目,那么如果您想使用 Hilt,那么您可能必须重新编写所有依赖关系图。如果您使用 Dagger,那么迁移到 Hilt 将不那么困难。

    关于android - 当 Koin 可用时,我为什么要使用 Android Hilt (Dagger2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64824349/

    相关文章:

    android - 使用 Hilt 将 ViewModel 注入(inject) ViewModel

    android - 没有构造函数参数的 Hilt Inject 到 ViewModel

    android - 如何在 Android 上自定义 facebook 登录屏幕?

    android - 使用 DI 工具找到 NavController

    android - 如何使用 koin 在 customView 中注入(inject) View 模型?

    Android,无法从分离的 fragment 访问 ViewModel

    android - App_HiltComponents.ActivityC 范围为 @dagger.hilt.android.scopes.ActivityScoped 可能不会引用具有不同范围的绑定(bind)

    android - Android Design Support Library 有哪些新功能以及如何使用它的 Snackbar?

    android - 有效数组适配器

    android - stagefright CameraSource::read 在 Samsung Galaxy S2 上返回小帧(20 字节)