Dagger,ButterKnife,Roboguide,AndroidAnnotations框架的依赖注入浅析

Dagger,ButterKnife,Roboguide,AndroidAnnotations框架的依赖注入浅析

  • Dagger ---专业为Android打造的依赖注入(DI)框架
  • ButterKnife---一个安卓视图注入框架
    • 参考资料:Dependency Injection: RoboGuice vs. ButterKnife。(果然,直接看英文的来得快点,这方面的中文解释还是很少,国外还是很给力。)其中:
        In android, if I want to avoid the boilerplate code such as injection of views, view holder in adapter and click listeners then the preferred library can be ButterKnife compare to others because remaining all done more than the required. 
      
      发现:ButterKnife对view,view holder in adapter and click listeners处理比较好。接着下一段话:
        AndroidAnnotations and ButterKnife does the similar work. RoboGuice, Dagger and Transfuse are in the same category.
        `AndroidAnnotations and ButterKnife`使用的是相同的工作,与`Dagger,Transfuse`不同
      
      发现,只在功能上讲解各自的特性和区别,却没有在原理上进行更多的分析,很遗憾。
    • 功能特性(方便了程序员,提高开发效率):
      • 支持 Activity 中的 View 注入
      • 支持 View 中的 View 注入
      • 支持 View 事件回调函数注入
      • 从繁琐的 findViewById 中解救出来
      • Fragment 销毁的时候掉用 ButterKnife . reset ( this );
    • 使用详解:
    • 总结:很遗憾,并没有找到Butter Knife的原理-->在app的性能上的消耗?
  • Roboguide
  • AndroidAnnotations---最火的快速开发框架
    参考资料:
    注解框架---AndroidAnnotations这里强调了几点:
    • AndroidAnnotations简称为AA,大量的使用注解,不会对APP的造成不良影响,会影响到APP的执行性能。
    • 分析主流注解框架:xUtilsButterKnifeDragger和Roboguice说道:实现原理是一致的,都是通过反射机制实现的,在Runtime运行期反射类中带有注解Field和Method,然后再去执行注解相对应的逻辑代码这样做:在APP的运行期执行的,会造成执行的效率下降执行时间变长的缺点。
      -->这里我就不发表意见,没有用过,不知道,但是查找相关的资料,可不是这么说,有点夸大AA,降低其他框架的嫌疑。
    • 工作的原理:
      • 在编译器中加了一层额外的自动编译步骤,用来生成基于你源码的代码。
      • 使用AA的注解在编译期间就已经自动生成了对应的子类,运行期运行的其实就是这个子类.则不会造成任何负面的影响
    • 使用详解参照:
    • 总结:从资料的分析来看,AndroidAnnotations像是综合了其他的几个框架的优点,通过注解,减少了繁琐(R.id.btn)的使用,并在编译的时候,将相应的注解进行转换。即:加快了开发的速度,又不影响app的性能。
  • 综合考虑:
    • Android依赖注入:Dagger、RoboGuice和ButterKnife 这里有三者的比较,但是仅仅是译文,没有一个很好的解释到位。
    • 相反:高手速成android开源项目[tool篇] 这里有很好的解释
      • AndroidAnnotations特点:
        (1) 依赖注入:包括view,extras,系统服务,资源等等
        (2) 简单的线程模型,通过annotation表示方法运行在ui线程还是后台线程
        (3) 事件绑定:通过annotation表示view的响应事件,不用在写内部类
        (4) REST客户端:定义客户端接口,自动生成REST请求的实现
        (5) 没有你想象的复杂:AndroidAnnotations只是在在编译时生成相应子类
        (6) 不影响应用性能:仅50kb,在编译时完成,不会对运行时有性能影响。
      • PS:AndroidAnnotationsroboguice的比较:roboguice通过运行时读取annotations进行反射,所以可能影响应用性能,而AndroidAnnotations编译时生成子类,所以对性能没有影响
      • roboguice 帮你处理了很多代码异常,利用annotation使得更少的代码完成项目
      • butterknife 利用annotation帮你快速完成View的初始化,减少代码
      • Dagger 依赖注入,适用于Android和Java
  • 相关阅读:
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值