23

我正在讨论在一个非常复杂且具有很多业务逻辑的 android 项目中使用 guice。Guice 似乎很合适,但每当我开始深入阅读它时,它开始看起来比它需要的更复杂。

我不明白的一件事是:如果 Guice 如此出色并且是编写 Java 代码的最佳方式,那么为什么使用 Guice 的 Android 代码如此之少......为什么 Google 没有在内部为 Android 使用 guice?

4

4 回答 4

27

Guice 使用起来完全有意义,实际上它被用于一大堆应用程序中。扩展 RoboGuice 为 Android 添加了一些细节,使其使用起来非常高效。

事实上,我无法想象没有它编写一个 Android 应用程序。太痛苦了。

查看网站上使用 Roboguice 的应用程序的链接(例如 Google Docs、OpenTable...)。众所周知,其他应用程序(例如 Square 应用程序)直接使用 Guice。

这完全有道理..去做吧!

与 Robolectric 一起,它还将使您的测试工作更轻松。

PS:我是 RoboGuice 的提交者,所以我是部分的 ;-)

PPS - 2013 年 6 月:最近的发展催生了其他基于注解/依赖注入的框架,它们在构建时完成大部分工作,因此避免了运行时反射的性能影响(在 Android 上很慢),因此更适合性能关键工作 - 如果您对此感兴趣,请查看 Dagger 和 AndroidAnnotations。

于 2011-10-18T21:27:01.980 回答
27

实际上,由于内存开销,谷歌不鼓励在 android 应用程序中使用 Guice 或 RoboGuice。

来源:

http://developer.android.com/training/articles/memory.html#DependencyInjection

5.11.2014 编辑:

有一个专门用于 android 的快速依赖注入库。我可以看到越来越多的人使用它:

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

13.04.2015 编辑: 谷歌发布了自己的匕首版本,它在运行时不使用反射:http: //google.github.io/dagger/

于 2014-03-05T08:37:28.570 回答
13

你知道有RoboGuice吗?这是Android的Guice。

于 2011-10-18T20:11:11.843 回答
12

展示依赖注入框架的优势的问题在于,不可能通过一个简单的 Hello World 应用程序来实现它。这些框架仅在具有很多复杂性的大型系统中显示出它们的价值。此外,他们的学习曲线有些陡峭。

因此,您找不到足够的教程是很正常的——使用 Guice 的开源项目。这将最常用于未发布的企业应用程序中。

正如 Google 不使用 Guice 的原因,Guice 并不适合任何地方。它增加了性能开销,并且在不需要的地方使用它没有意义。

于 2011-10-18T20:09:06.120 回答