Hilt框架的功能和设计理念,和Dagger基本是完全一致的,Hilt也是完全在Dagger基础上进行开发的
但是Dagger的用法比较繁琐,Hilt主要是做了便用性上的改进,主要有以下点
- 提供常用Component,不用再为每个InjectTarget都创建一个Component
- 提供常用Scope,不用再手动创建Scope
- 简化Component和Scope,Component和Scope对应一类安卓组件,而不是对应每个InjectTarget
- Scope定位比Dagger更加准确,Dagger中的Scope仅仅是一种标记,需要自己去控制其作用域效果
- 依赖对象的Scope具有继承效果,比如Fragment可以自动继承Activity作用域中的单例变量
- 通过@HiltAndroidApp和@AndroidEntryPoint就可以自动注入对象,不需要手动通过Component或AndroidInjector注入
- 以上工作被简化后,Hilt几乎只需定义Module,关注如何创建依赖对象即可