Dagger和ButterKnife Android之间的区别

任何人都可以指出Dagger和Butterknife的区别吗? 我知道Butterknife是一个视图注入库和匕首是一个dependency injection库。 但网上的文件似乎有点我的开销。 根据Butterknife文档,你也可以做非活动注射,这是什么匕首呢? 还是我误解了一些东西?

http://square.github.io/dagger/

http://jakewharton.github.io/butterknife/

黄油刀是针对只注入意见。 非活动注入只是意味着你可以提供你自己的视图根来注入视图(就像手动充气视图等)。 匕首有点复杂。 它可以注入任何你想要的,只要你指定满足这些依赖的Module类(或者你可以使用构造函数注入)。

作为一个底线 – 我会说ButterKnife帮助你避免创build视图的所有样板代码(aka (TextView)findViewById(R.id.some_text_view);没有其他的东西了,在(TextView)findViewById(R.id.some_text_view);它仍然做所有那些无聊的代码。这不是真的注射..

另外值得一提的是,杰克·沃顿(Jake Wharton)是那些酷酷的库的开发者之一:)

这里有一些有用的链接:

匕首在GitHub上的示例项目

匕首介绍Devoxx(杰克·沃顿)

匕首与匕首开发者的聚会

没有太多有用的ButterKnife链接。 这真的很简单直接,所以希望你不需要任何

这里是Buterknife文档的链接。 这非常简单。 然而,文档没有说,但黄油刀的devise意味着,你也可以在自定义视图中使用黄油刀。 只需将“this”replace为“context”或“getContext”,以确定范围。

链接: http : //jakewharton.github.io/butterknife/

我结合了黄油刀,parcelable和easyAdapter列表视图在我的项目。 原因是较less的样板和可parcel更快,更干净的包装。 所以如果你有很多的ListView,我推荐这种方法。

链接:

https://github.com/johncarl81/parceler

https://github.com/ribot/easy-adapter

区别很简单: 黄油刀就像一把匕首,只有无限的尖锐。
正如文件中指出的那样。

@ JakeWharton的回答部分在评论中:

TL; DR:他们相辅相成。 使用Butterknife注射的意见,匕首的rest。

如果你使用Dagger来尝试和注入视图,你将会有一个非常糟糕的时间:)尝试把黄油刀作为绑定视图而不是注入的手段。 我只是把它叫做注射,因为所有的RoboGuice转换者都在抱怨Dagger缺乏“视图注入”。 这根本不是真正的注射。 就像答案中提到的那样,这只是一种减less样板的方法。 在引擎盖下,它只是像你一样调用findViewById!

使用ButterKnife来简化注册点击监听器,并减lessfindViewById()调用提供的样板文件。

Dagger和Dagger2是通用dependency injection系统。

忽略Guice和MVVM上的文本,并阅读Dependency InjectionThe Android Way 。 这几乎回答了匕首的意图和简化。

https://spring.io/blog/2011/08/26/clean-code-in-android-applications