android开发三大框架哪个用的多(android经典简单小项目)

Dagger和Koin无疑是Android中最流行的两个依赖注入框架。这两个库具有相同的用途,而且看起来非常相似,但它们在底层的工作方式却非常不同。 那么Hilt是什么呢?Hilt是一个内部使用Dagger的库,只是简化了它的用法,因此我在这里所说的有关Dagger的内容也适用于Hilt。在本文中,我不会告诉您应该选择哪个库。相反,我想向您展示它们的本质区别以及这些差异对您的应用造成的影响。 Da…

Dagger 和 Koin 无疑是 Android 中最流行的两个依赖注入框架。这两个库具有相同的用途,而且看起来非常相似,但它们在底层的工作方式却非常不同。

那么 Hilt 是什么呢?Hilt 是一个内部使用 Dagger 的库,只是简化了它的用法,因此我在这里所说的有关 Dagger 的内容也适用于 Hilt。在本文中,我不会告诉您应该选择哪个库。相反,我想向您展示它们的本质区别以及这些差异对您的应用造成的影响。

Dagger

如果我们希望 Dagger 提供某个类的实例,我们要做的就是在构造函数中添加 @Inject 注解。

Android注解三大框架Dagger、Hilt和Koin有何不同?

添加这个注解后,Dagger 会在构建时为这个类生成一个 Factory。在该用例下,由于它的类名是 CompositeAdapter, 它会生成一个名为 CompositeAdapter**_**Factory的类。

此类包含创建 CompositeAdapter 类的实例所需的所有信息。

Android注解三大框架Dagger、Hilt和Koin有何不同?

如你所看到该工厂类实现了 get() 并返回了一个新的 CompositeAdapter 实例。这实际上是此类实现的 Provider <T> 接口中指定的方法。其他类可以使用 Provider<T> 接口来获取一个类的实例。

Android注解三大框架Dagger、Hilt和Koin有何不同?

如果我们用 Hilt 代替 Dagger 呢?

在这个例子中,没有任何区别。Hilt 是一个内部使用 Dagger 的库,我向你展示的类是由 Dagger 生成的。如果您使用 Hilt,它确实为我们生成了一些额外的类,这些类简化了 Dagger 的使用,并减少了我们需要编写的样板代码的数量。但核心部分保持不变。

Android注解三大框架Dagger、Hilt和Koin有何不同?

Koin

Koin 与 Dagger 以及 Hilt 相比,管理依赖项的方法完全不同。要在 Koin 中注册依赖项,我们不会使用任何注解,因为Koin不会生成任何代码。相反,我们必须为模块提供工厂,这些模块将用于创建项目中所需的每个类的实例。

Koin 将这些工厂类的引用添加到 InstancesRegistry 类中,该类包含对我们编写的所有工厂的引用。

Android注解三大框架Dagger、Hilt和Koin有何不同?

该 map 中的 key 是类的全名或使用命名参数时提供的名称。对应的值是我们编写的工厂,将用于创建类的实例。

要获得依赖关系,我们需要调用 get() (比如在一个工厂类中) 或者通过在 activities 或 fragments 中调用 inject() 委托属性 ,从而懒加载 get()。get()方法将查找为给定类型的类注册工厂,并将其注入其中。

Android注解三大框架Dagger、Hilt和Koin有何不同?

有什么影响?

Dagger 生成代码来提供依赖,而 Koin 不生成代码,这实际上带来了一些影响。

1. 错误处理

因为Dagger 是一个编译时依赖注入框架,如果我们忘记提供某些依赖,我们几乎会立即知道我们的错误,因为我们的项目将构建失败。

例如,如果我们忘记向构造函数的 CompositeAdapter 中添加 @Inject 注解,并尝试将其注入 fragment 中,则构建将失败,并显示适当的错误,确切地告诉我们出了什么问题。

Android注解三大框架Dagger、Hilt和Koin有何不同?

在 Koin 中的情况有所不同,因为它不会生成任何代码。如果我们忘记为 CompositeAdapter 类添加工厂,应用将会成功构建,但是会抛出 RuntimeException 一旦我们请求获取这个类的实例。它可能会在应用启动时发生,因此我们可能会立即注意到它,但也可能稍后在其他屏幕上或当用户执行某些特定操作时发生。

Android注解三大框架Dagger、Hilt和Koin有何不同?

2. 对构建时间的影响

Koin 不生成任何代码的优点是:它对我们的构建时间的影响要小得多。Dagger 需要使用注解处理器来扫描代码并生成适当的类。这可能需要一些时间,可能会减慢我们的构建。

3. 对运行时性能的影响

从另一方面来说,因为 Koin 在运行时解析依赖项,所以它的运行时性能稍差一些。

Android注解三大框架Dagger、Hilt和Koin有何不同?

到底相差多少呢?为了估算性能差异我们可以使用该库,其中 Rafa Vázquez 基于不同的设备上测量并比较了这两个库。测试数据的编写方式可以模拟多个级别的传递依赖关系,因此它不仅仅是具有 4 个类的虚拟应用程序。

Android注解三大框架Dagger、Hilt和Koin有何不同?

如您所见,Dagger 对启动性能几乎没有影响。另一方面,在 Koin 中,我们可以看到它花费了很多时间。在 Dagger 中注入依赖也比在 Koin 中快一些。

总结

正如我在本文开始时所说的,我这里的目标不是告诉您要使用哪个库。我在两个不同的大项目中都使用了 Koin 和 Dagger。老实说,我认为选择 Dagger 还是 Koin 并不重要,重要的是能够让你编写干净、简单且易于单元测试的代码。我认为所有的库:Koin,Dagger 和 Hilt 都达到了这个目的。

所有这些库都有自己的优势,我希望了解它们在底层是如何工作的,能够帮助您自己决定哪种库最适合您的应用。

最后

在这里我分享一份由大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(1)
上一篇 2022年5月12日 下午6:42
下一篇 2022年5月12日 下午6:42

相关推荐

  • 超声波清洗机推荐(李佳琦极力推荐超声波清洗机)

    作为一个“眼镜党”,每次入睡前经常都会忘了将眼镜放到眼镜盒中,直接放在床头柜上的话久而久之眼镜的镜片就蒙上了一层细小灰尘。虽然说擦拭起来不费力,但时间一长眼镜有些地方不是凭擦拭就能“搞定”的,所以大概两个星期左右就得去一次眼镜店进行超声波清洗。 后来实在不想总是跑去眼镜店清洗,所以我就入手了一款来自于小米有品上架的“EraClean超声波清洗机”,主要就是用于给我的眼镜进行清洗。那么本篇文章的内容…

    2022年10月17日
    490
  • 手机视频格式转换器哪个好(手机视频转换成mp3格式)

    剪辑视频时,我们会接触多种格式的视频文件,为了统一格式是需要借助工具对视频格式进行转换的。今天要和大家分享的是如何在线转换视频的格式,以便于我们在剪辑视频时有效地提高剪辑效率。 在电脑中,不少的视频剪辑人员使用转换视频格式转换的工具是在线版的迅捷视频转换器。该网站支持多种格式的音频、视频文件进行转换,并且转换速度比较快。 如何转换视频格式? 1*搜索网站 首先,需要我们在电脑的浏览器中找到对应的视…

    2022年5月12日
    710
  • 论坛营销案例及分析,有哪些著名的营销论坛

    内容营销是现在网络营销的一大核心核心,是解决流量、品牌传播、产品销售等的一个重要方法。 在论坛营销推广这个网络营销老字号里面,内容营销绝对可以说用到了极致,在天涯、猫扑、新浪、网易等一些论坛里面经常都可以看见一些不错的营销帖子,或引流、或推销产品、或诱导加好友,杀人无形,绵里藏针。 一篇论坛帖子不需要文字多华丽,最主要的是讲(编)出(造)真实感受,营造一个环境,道出问题所在,然后循序渐渐诱人进入这…

    2022年5月19日
    850
  • 个人做什么生意赚钱,月收入一万的4个小生意

    如今经济下滑,城里的就业机会也减少了,而且工资待遇也在不断地下降,农民工来城里打工,将越来越难赚到钱的。所以,与其来城里打工,不如在乡下做一门小本生意,这样能赚到的钱更多。 吾谷网小编综合网络资料,为大家推荐一些小型生意项目,本钱少,农民工也能够快速上手,迅速地赚到钱。 01 回收手机 如今的人们,更换手机的速度很快。有了新手机,旧手机就积压在手里,却不舍得直接扔掉。这时候,如果有人回收手机,将能…

    2022年8月28日
    470
  • 100万怎么投资,100万存款经典理财方案

    01 在“房住不炒”,房价涨幅明显收窄,不少城市房价不断下跌,房产投资收益空间变小,炒房成本越来越高的情况下。 越来越多的读者向笔叔咨询:手上有笔XX万元的闲钱,例如100万,不想买房因为怕下跌,要怎样投资,安全又能多赚点? 想要收益高,可以去投股票,或者基金,期货等高风险资产,但普通投资者入手这类投资往往事与愿违,不仅没赚到,反而本金亏损。 世上没有免费的午餐,高收益的背后一定是高风险。 所有人…

    2022年6月21日
    650
  • 恢复出厂设置会怎么样,手把手教你如何安全删除数据

    我们应该都知道,有时候手机卡顿,速度慢,或者出现手机故障,都是可以通过恢复出厂设置得到解决,但是这样做的话,很多人也很顾虑,恢复出厂设置会不是对我们的手机产生损坏或者影响呢?如果有影响的话那影响大不大呢? ​首先你要知道手机恢复出厂设置对手机肯定是影响的,而且影响还很大,当然说到影响,肯定就有好的和坏的,好的影响就是你的手机非常流畅,快到飞起,那我们更多的是想了解负面影响。我们要想知道到底会产生什…

    2022年9月18日
    540
  • seo专业优化平台有哪些,专业seo优化平台排名介绍

    猎城网—国内智能搜索营销服务平台,坚持只做“提供完善的电子商务平台,为商家创造最大的经济效益和社会价值,让消费者得到真真正正的实惠,追求商业策划与数据分析,帮助广大客户顺利对接上历次互联网浪潮,准确优选出符合自己需要的互联网运。 猎城网,采用一站式网络营销服务助力企业销量增长。提供城市消费导航网站、域名注册、虚拟主机、网站建设,网站推广、企业邮箱、数据库开发、SEO优化、OA软件开发、系统集成等;…

    2022年6月30日
    690
  • 办公软件系统有哪些,国产office办公软件排行

    有人说,提高工作效能的办法就是:时间管理、任务分解、工作日志……这些都是最基础的办法,是时候掌握一些高级技能了——推荐三大办公室必备系统: 沟通效率提升神器:OA系统 推荐软件: 钉钉——让工作是工作,生活是生活。 主要解决办公室效率问题,将办公方式化繁为简。 场景展示 1.月底单据一堆,整理得心力交瘁 一键电子报销,一分钟搞定所有。除了报销,各种手工审批均可变为电子审批,简化人工操作,提高操作效…

    2022年7月11日
    640
  • 怎么知道自己适合什么发型,教你如何根据脸型选择适合自己的发型

    1.圆脸 适合发型:斜刘海、S形刘海、短Bob头 避免的发型:卷发、平刘海 圆脸的女生一般脸型较大,下巴的位置较圆润,所以看起来颧骨的距离和脸部长度很接近,脸的轮廓也会显得十分圆大。建议可以尝试短bob头,头发的长度刚好可以修饰脸型,盖住脸上较圆润的部份;另外,又要避免平刘海,尽快选择斜刘海及S形刘海,将脸颊两侧的线条感表现出來。 2.长脸 适合发型:空气刘海、波浪卷 避免的发型:中分、贴脸直发 …

    2022年10月6日
    1980
  • 怎么购买网站的域名和空间,购买域名和空间的注意事项

    许多的企业或许是新手,对网站空间和域名的区别是不太清楚的,这种状况是很正常的,终究在网站建设这个领域中,向网站空间、域名、虚拟主机、DNS等这些名词,或许常常都会见到,而在校园或许生活上,又没有学过什么是空间、什么是域名,所以对这些概念不了解是正常的。模板网站建站前一定要搞清楚空间和域名,下面壹起航(yiqihang.cn)就来为大家介绍一下。 这儿说到的网站空间,它是一个泛指的概念,由于网站空间…

    2022年7月12日
    610

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信