3

我在阅读关于依赖注入的内容,并发现了2个引起我注意的库,AndroidAnnotations和Dagger 2.我看到的是AA具有很多功能,包括DI,但大多数开发人员都使用Dagger 2为DI。AndroidAnnotations and Dagger 2

我在想DI与AA和DI与Dagger 2有什么不同?如果我使用AA,这意味着我不需要Dagger 2?

我找不到有关AA和与其他库比较的许多信息。

任何信息都会有所帮助。

回答

2

我不认为AA和Dagger是可以比较的。

Dagger是一个通用的依赖注入库,有很多功能。它也可以在Android上运行,但它不需要Android,它可以应用于纯Java项目。它具有大量的依赖注入功能,用于完全基于代码生成的依赖注入器。

AndroidAnnotations是一个基于注释的Android框架。它确实有一个有限的依赖注入模块(它只是AA的一个小子集),但这不是它的主要特性。它添加了基于注释的API模板,并且为Android提供了很多东西,这些API用于每个项目,并且通常需要很多不必要的代码,比如视图和资源注入,事件处理,实例状态恢复,线程等。请参阅AA here的所有用例。实际上,使用Dagger的复杂注入注入和AA的许多特征(我在我的所有项目中都是这样做)真的很有意义。

声明:我是AndroidAnnotations开发人员。

0

最近,我创建了一个示例应用程序,通过实现Dagger 2和Android架构组件(Room和Viewmodel),它可以帮助您理解使用匕首库和MVVM架构的依赖注入。

Here is the github project link