依赖注入的优点:
1.依赖注入会自动释放不再使用的对象,减少资源的过度使用。
2.减少模版代码,代码变的更具可读性。
3.编写低耦合代码,更容易测试。
4.符合依赖倒置原则
Koin与Hilt的区别
1.Koin使用功能解析,无代理,无代码生成,无反射,使用dsl进行配置,高内聚,但会增加启动时间,运行时正确性
2.Hilt:由于jetpack开源,Android Studio提供了强大的基础支持,在关联代码之间进行导航,编译时正确性。使用Kapt会生成代码,代码量增加,编译时间加长,门槛比较高。
Hilt基于Kotlin的特性实现的
1.基于Kotlin的高阶函数特性,可以作为类,参数及变量
2.inline,reified ,infix关键字的特性
3.Kotlin trailing lambdas表达式
4.Function with receiver的特性
Hilt原理
1.通过限定符存储在map中
2.通过rootScope 和自定义scope实现生命周期的管理。
3.factory和single 区分单个范围