【问题标题】:Why would I use Android Hilt (Dagger2) when Koin is available当 Koin 可用时,我为什么要使用 Android Hilt (Dagger2)
【发布时间】:2020-11-13 16:18:03
【问题描述】:

我希望将我的 Android 应用程序中使用的第三方库的数量保持在绝对最低限度。

我开始使用Dagger2,然后切换到Koin

KoinDagger2 有了很大的改进。

Koin 具有内置的 ViewModel 支持,不需要为 Workers 提供任何“额外”的东西。

Koin 让您可以毫不费力地在任何地方注入任何东西,非常棒。

在 Android Hilt 公告中,我完成了一次评估以评估它,因为它会减少我对 3rd 方库的依赖。

在完成我的钉钉工作后,我不明白为什么有人会使用 Hilt。

例如:

对于 Koin 注入 Worker 我让工作人员实现 KoinComponent,对于 Hilt 注入工作人员我需要禁用默认的 WorkerManager 初始化,并使用两个注释@WorkerInject & @Assisted.

我错过了什么吗?

【问题讨论】:

    标签: android koin dagger-hilt


    【解决方案1】:

    我认为您已经部分回答了您的问题: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:

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

    Hilt:

    1. 建立在匕首之上,dependency injection 的标准框架,官方推荐用于 android 开发。
    2. 使用注释生成代码。官方注解cheat sheet为您提供帮助。
    3. 它了解 android 组件的生命周期。
    4. 如果您具备 Dagger 的基本知识,那么学习 Hilt 将很容易。
    5. Hilt 在编译时解决依赖关系,这意味着它有助于构建时的正确性。

    在 Koin 和 Hilt 之间进行选择取决于给定场景的多个因素,两者都有其明显的优点和缺点。

    For example: 正如您所说,您已经在 Koin 中编写了您的项目,那么如果您想使用 Hilt,那么您可能必须重新编写所有依赖关系图。如果您使用的是 Dagger,那么迁移到 Hilt 将不那么困难。

    【讨论】:

    • 只是我的 2 美分:officially recommended 没有任何意义。它不会增加任何东西的价值。
    • @WarrenFaith 我明白你在说什么,但不同意它至少可能不会增加价值。被“官方推荐”可能意味着如果您遇到问题,可以依靠更大的社区作为资源,其开发和错误修复也是如此。它可能只是某种优势。 Koin 还缺少一个优势是兼容 Kotlin Multiplatform Mobile 模块,Dagger2 仅限于 Java/JVM。
    • @Mark Kotlin 社区足够大。特别是如果您使用 Android 和 Kotlin Multiplatform,您应该知道这一点。据我了解,Hilt 不能使用功能模块(Google 推荐 Dagger),而 Koin 可以,您不仅可以在 Android 上使用它,还可以在后端使用它。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多