第314篇 Hilt 使用与原理:Android 专属的 DI 方案

发布时间:2026/11/5 1:57:30
第314篇 Hilt 使用与原理:Android 专属的 DI 方案 承接上一篇《依赖注入入门:构造注入与字段注入》,那一篇讲清了「为什么要 DI」,这一篇讲「Hilt 具体怎么做」。Hilt 不是凭空出现的——它是 Dagger 针对 Android 生命周期做的重新设计,理解它必须先理解 Dagger 原本的问题。结论先行:Hilt 相对 Dagger 的核心改进是「用 Android 的组件树替代了自定义的作用域链」,让作用域与生命周期有了天然对应关系。这带来的结果是:几乎不需要写自定义 Scope,@Singleton/@ActivityScoped就能覆盖绝大多数场景。一、Dagger 原本的问题Dagger 2 在纯 Java/Kotlin 项目里很好用,但在 Android 上有三个不适配:问题一:作用域靠自定义注解声明,与生命周期脱钩。// Dagger 原生写法:自定义作用域 @Scope @Retention(RetentionPolicy.RUNTIME) public @interface PerActivity {} @PerActivity @Module public class ActivityModule { @Provides @PerActivity ActivityCache provideCache() { return new ActivityCache(); } }问题: