范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Android注解三大框架DaggerHilt和Koin有何不同?

  译者:伤心的猪大肠
  Dagger 和 Koin 无疑是 Android 中最流行的两个依赖注入框架。这两个库具有相同的用途,而且看起来非常相似,但它们在底层的工作方式却非常不同。
  那么  Hilt  是什么呢?Hilt  是一个内部使用 Dagger  的库,只是简化了它的用法,因此我在这里所说的有关 Dagger  的内容也适用于 Hilt。在本文中,我不会告诉您应该选择哪个库。相反,我想向您展示它们的本质区别以及这些差异对您的应用造成的影响。Dagger
  如果我们希望 Dagger 提供某个类的实例,我们要做的就是在构造函数中添加  @Inject  注解。
  添加这个注解后, Dagger  会在构建时为这个类生成一个 Factory 。在该用例下,由于它的类名是 CompositeAdapter , 它会生成一个名为 CompositeAdapter**_**Factory 的类。
  此类包含创建  CompositeAdapter  类的实例所需的所有信息。
  如你所看到该工厂类实现了  get()  并返回了一个新的 CompositeAdapter  实例。这实际上是此类实现的 Provider   接口中指定的方法。其他类可以使用 Provider  接口来获取一个类的实例。
  如果我们用 Hilt 代替 Dagger 呢?
  在这个例子中,没有任何区别。 Hilt  是一个内部使用 Dagger  的库,我向你展示的类是由 Dagger  生成的。如果您使用 Hilt ,它确实为我们生成了一些额外的类,这些类简化了 Dagger  的使用,并减少了我们需要编写的样板代码的数量。但核心部分保持不变。
  Koin
  Koin  与 Dagger  以及 Hilt  相比,管理依赖项的方法完全不同。要在 Koin 中注册依赖项,我们不会使用任何注解,因为Koin不会生成任何代码。相反,我们必须为模块提供工厂,这些模块将用于创建项目中所需的每个类的实例。
  Koin  将这些工厂类的引用添加到 InstancesRegistry  类中,该类包含对我们编写的所有工厂的引用。
  该  map  中的 key  是类的全名或使用命名参数时提供的名称。对应的值是我们编写的工厂,将用于创建类的实例。
  要获得依赖关系,我们需要调用  get()  (比如在一个工厂类中) 或者通过在 activities  或 fragments  中调用 inject()  委托属性 ,从而懒加载 get() 。get() 方法将查找为给定类型的类注册工厂,并将其注入其中。
  有什么影响?
  Dagger 生成代码来提供依赖,而 Koin 不生成代码,这实际上带来了一些影响。
  1. 错误处理
  因为 Dagger  是一个编译时依赖注入框架,如果我们忘记提供某些依赖,我们几乎会立即知道我们的错误,因为我们的项目将构建失败。
  例如,如果我们忘记向构造函数的  CompositeAdapter  中添加 @Inject  注解,并尝试将其注入 fragment 中,则构建将失败,并显示适当的错误,确切地告诉我们出了什么问题。
  在 Koin 中的情况有所不同,因为它不会生成任何代码。如果我们忘记为  CompositeAdapter  类添加工厂,应用将会成功构建,但是会抛出 RuntimeException  一旦我们请求获取这个类的实例。它可能会在应用启动时发生,因此我们可能会立即注意到它,但也可能稍后在其他屏幕上或当用户执行某些特定操作时发生。
  2. 对构建时间的影响
  Koin 不生成任何代码的优点是: 它对我们的构建时间的影响要小得多 。 Dagger  需要使用注解处理器来扫描代码并生成适当的类。这可能需要一些时间,可能会减慢我们的构建。
  3. 对运行时性能的影响
  从另一方面来说,因为 Koin 在运行时解析依赖项,所以它的运行时性能稍差一些。
  到底相差多少呢? 为了估算性能差异我们可以使用该库,其中 Rafa Vázquez  基于不同的设备上测量并比较了这两个库。测试数据的编写方式可以模拟多个级别的传递依赖关系,因此它不仅仅是具有 4 个类的虚拟应用程序。
  如您所见, Dagger  对启动性能几乎没有影响。另一方面,在 Koin  中,我们可以看到它花费了很多时间。在 Dagger  中注入依赖也比在 Koin  中快一些。总结
  正如我在本文开始时所说的,我这里的目标不是告诉您要使用哪个库。我在两个不同的大项目中都使用了  Koin  和 Dagger 。老实说,我认为选择 Dagger  还是 Koin  并不重要,重要的是能够让你编写干净、简单且易于单元测试的代码。我认为所有的库:Koin,Dagger 和 Hilt 都达到了这个目的。
  所有这些库都有自己的优势,我希望了解它们在底层是如何工作的,能够帮助您自己决定哪种库最适合您的应用。 最后
  在这里我分享一份由大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
  这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
  当然,你也可以拿去查漏补缺,提升自身的竞争力。
  真心希望可以帮助到大家,Android路漫漫,共勉!
  如果你有需要的话,只需私信我【进阶】即可获取

老将回归AMD首席独立GPU架构师跳槽回到英特尔IT之家2月20日消息,据Tomshardware报道,AMD独立GPU首席SoC架构师RohitVerma于本周早些时候跳槽到英特尔,担任独立GPUSoC的首席产品架构师。这次招美团站在餐饮行业对立面了吗?上周五,美团股价午后突然跳水,当天收跌14。86,令人大跌眼镜。这一跌幅已超过众多互联网巨头遭遇噩耗时的表现。前年11月4日,受蚂蚁金服暂停IPO公告影响,阿里巴巴股价下跌8。13从多核到众核处理器其实多核这个词已经流行很多年了,世界上第一款商用的非嵌入式多核处理器是2002年IBM推出的POWER4。当然,多核这个词汇的流行主要归功与AMD和Intel的广告,Intel与A新一轮爆发,英德等报道我们的骄人之处随着北京冬奥会的瞩目成果,人们发现,中国互联网科技在本次冬奥会正展现出全新的科技新高地。人工智能云播等互联网科技,揭开了互联网经济的底层逻辑。一场新的变革正在悄然展开。韩先驱经济报内蒙古科技成果登记数量首次破千近日,2021年度内蒙古自治区科技成果统计分析报告(以下简称分析报告)出炉,我区科技成果登记数量首次突破1000项。根据分析报告材料统计,2021年全区共登记科技成果1062项,较ampampquot吉利Smart项目首款车型命名1ampampquot车长达4290毫米来源中国经济网姜智文根据厂家发布的谍照,Smart1是一辆四门掀背车或跨界车,车长为4290毫米,比现款SmartForFour的3495毫米更长。在欧洲市场,1的竞争对手将是为数iPhone用户转小米已1年,差距真有点大,更新MIUI13后尤为明显对于学生党来说,如果不是家里有矿,换手机真的不是一件容易事,去年我就是攒了很久的钱,才把我已经用了快3年的iPhoneXR换成了当时刚出的Xiaomi11Pro。不得不说啊,近几年基于物联网上位APPPLC的远程控制系统设计引言随着工厂设备不断朝着大型化复杂化和自动化方向发展,设备的运行监控和维修难度日益增大,传统的设备故障事后维修与计划维修已经不适应精益生产需求,采用物联网上位机APPPLC的远程控苹果手机拍照很一般,为什么苹果会说比单反像机强?这是笑话吗?苹果手机拍照很一般?苹果说比单反相机强?笑话?这个问题很有意思,不知道出自哪里。无论手机相机都是获取图像的工具,仅仅是拍摄的一种方式而已,都能拍出好片,也都能拍出烂片!!!脖子上挂5G已成为中国的标配2021年我国手机生产商公布的绝大部分智能手机均支持5G网络,仅有一小部分中低端机器设备不支持5G网络受大家喜爱的Android旗舰级手机,例如华为集团P40产品系列小米手机10系安卓的四面等宽边框,为什么那么难?2017年9月13日,iPhoneX发布。除了骄傲的刘海全屏外,最美的是它的四个等宽边框。也就是说,四边屏幕的框架宽度是完全一致的,极简主义对称美学设计开创了一个新时代。当然,这个
京东科技IPO受阻,初创团队分崩离析,金融科技的门不好进这年头,通过小贷产品在用户身上薅一把,发行ABS再从银行身上赚一把,最后登陆资本市场功成名就的计划,很难再实现了。本文由无冕财经(wumiancaijing)原创首发作者黄琪鑫编辑碧桂园的远见修战略之定力,追科技之梦想发展至今,业绩指标的呈现已不能准确衡量这家龙头房企的重量,如何让企业基业长青,是碧桂园在强者恒强时代的新命题。本文由无冕财经(wumiancaijing)原创发布作者陈欣苗编辑雷缓马斯克也没那么自信了?特斯拉低下高傲的头颅马斯克仗着自己就是超级IP,一举解散美国的公关团队,但中国的公关团队仍在招兵买马,他似乎变相承认产品主义失败。本文由无冕财经(wumiancaijing)原创首发作者沈浪编辑陈涧设both护眼仪深度体验凭实力科学护眼现在电子屏幕每天都充斥在我们周围,不管是加班党,还是学生党,每天都需要面对至少长达五小时的电子屏幕阅读,据国民用眼行为大数据报告统计显示,中国青少年平均用眼时长在5小时以上,超过推超级大脑震撼亮相,看恒大汽车如何车联万物?如果说电动化是汽车变革的上半场,下半场则是智能化。在新一轮的造车浪潮中,产业黑马恒大汽车凭借什么脱颖而出?本文由无冕财经(wumiancaijing)原创发布作者杨煜编辑雷缓之设计欧瑞博扫拖机器人R1体验扫拖一体独立清扫扫地机器人和拖地机器人可算是解放人类双手的两大智能清洁工具,但是市面上的清洁机器人只有在扫地或拖地单方面在行,而把扫拖功能集成在一起的智能清洁工具少之又少。非常感谢由糖纸众测提供的NANK南卡T2真无线蓝牙耳机体验动圈动铁齐开花自2019年6月南卡耳机发布全新TWS蓝牙5。0耳机Nank南卡N2以后,作为上市的旗舰真无线蓝牙耳机,吸引了不少国内外媒体的关注,并且荣登众多数码媒体的热门榜单,同时在2020年JEETAIRPLUS蓝牙耳机体验听歌通话两不误JEETAIR无线蓝牙耳机凭借连接稳定低延迟降噪芯片超长续航等卖点,赢得了广大消费者的认可,而JEETAIRPLUS算是JEETAIR的迭代升级版本,其内置了全频HIFI动铁单元,管理红利时代,地产江湖谁是赢家?众多房企三道红线压顶,业绩增长放缓,但龙湖地产5年前就稳居绿档,还保持着双位数增长,它是怎么做到的?本文由无冕财经(wumiancaijing)原创首发作者陈欣苗编辑陈涧设计布冬编一季度开店600家,零售云成苏宁易购新增长极聚焦零售,是苏宁易购发展的核心。在零售形态不断发展的竞争格局之下,零售云的战略地位更为突出。本文由无冕财经(wumiancaijing)发布编辑雷缓之设计布冬实习生郭曼怡3月30日高端OLED电视市场第一后,创维新故事开始?疫情催化下,宅经济时代来临,催化应用于创维酷开电视品牌的酷开系统业绩大幅增长,成为创维集团新的增长引擎。本文由无冕财经(wumiancaijing)原创首发作者海棠葉编辑雷缓之设计