使用Guice for Android是否有意义

时间:2011-10-18 19:56:50

标签: android guice roboguice

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

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

4 个答案:

答案 0 :(得分:27)

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

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

在网站上查看使用Roboguice的应用程序链接(例如Google Docs,OpenTable ...)。另外,像Square应用程序这样的应用程序也可以直接使用Guice。

完全有道理..去做吧!

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

PS:我是RoboGuice的提交者,所以我偏爱; - )

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

答案 1 :(得分:23)

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

来源:

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

5.11.2014编辑:

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

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

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

答案 2 :(得分:13)

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

答案 3 :(得分:12)

证明依赖注入框架的优势的问题在于,使用简单的Hello World应用程序无法实现它。这些框架仅在具有大量复杂性的大型系统中显示其价值。而且,他们的学习曲线有些陡峭。

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

为什么谷歌不使用Guice,Guice并不适合所有地方。它增加了性能开销,在不需要它的地方使用它是没有意义的。