Android平台可以使用的依赖注入框架,现在常用的有四种:Dagger、Butter Knife、RoboGuice、Android Annotations。
经过一系列的比较,选择的范围缩小到Dagger、Butter Knife这2个框架上。其实在国内外使用的比较多的应该是Dagger,但是还是有点复杂的。
Butter Knife的确不是严格意义上的注入,之所以会叫View injection,是因为一些在使用dagger的人说view injection太麻烦了。所以才会有Butter Knife的诞生。Butter Knife就是这么简单粗暴findViewById。
好了,到这里,应该明白ButterKnife和Dagger的不同了,其实应该说ButterKnife是Dagger的补充,ButterKnife只专注于View的注入。其他的就使用Dagger吧。用ButterKnife,配合Dagger使用。
ButterKnife
ButterKnife是一个编译时的依赖注入框架(compile-time dependency injection framework)
用来简化android中类似findViewById、setOnclickListener等的模板代码
ButterKnife 有哪些优势?
ButterKnife的具体使用,请参考文章
http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549
http://blog.csdn.net/zhangconglin/article/details/78403049
它的具体优势:
1.强大的View绑定和onClick事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强
ButterKnife实现原理
- butterKnife是一个运行时依赖注入框架,有效地帮我们简化一些重复代码。
- butterKnife在ButterKnife.bind方法里通过反射调用对应的类构造方法执行初始化工作,所以butterKnife并不是完全没有使用反射,只在这个地方用到了。所以butterKnife的效率也是很高的。对于反射这个技术,不应该持极端态度(彻底不用,或到处滥用)。特别是在android中,到处都是反射,对性能也是有一定的影响的。
- butterknife使用 apt(Annotation Processing Tool)技术来生成java类。
注解处理器:http://blog.csdn.net/u013045971/article/details/53509237
网友评论