Вопрос

Я обсуждаю использование Guice в проекте Android, который довольно сложный и имеет много бизнес -логики. Guice кажется хорошей подходящей, но всякий раз, когда я начинаю читать глубже, он начинает выглядеть более сложным, чем нужно.

Одна вещь, которую я не понимаю: если Guice так хорош и лучший способ написать код Java, почему есть так мало кода Android, в котором используется Guice ... и почему Google не использовал Guice внутренне для Android?

Это было полезно?

Решение

Проблема с демонстрацией сильных сторон структуры впрыска в зависимости заключается в том, что невозможно достичь его с помощью простого приложения Hello World. Эти рамки показывают свою ценность только в больших системах с большой сложностью. Кроме того, у них есть какая -то крутая кривая обучения.

Поэтому вполне нормально, что вы не можете найти достаточно уроков - проекты с открытым исходным кодом, которые используют Guice. Это чаще всего используется в корпоративных приложениях, которые не публикуются.

Как почему Google не использует Guice, Guice не подходит везде. Он добавляет переносные накладные расходы, и не имеет смысла использовать его в местах, где это не нужно.

Другие советы

Guice полностью имеет смысл использования и фактически используется в целом куче приложений. Extension Roboguice добавляет некоторые тонкости для Android, что делает его супер продуктивным для использования.

На самом деле я не могу себе представить, чтобы написать приложение для Android без него. Слишком болезненно.

Проверьте ссылки на приложения, используя Roboguice на веб -сайте (например, Google Docs, OpenTable ...). Также известно, что другие приложения, такие как приложение Square, напрямую используют Guice.

Это полностью имеет смысл .. Иди!

Вместе с Robolectric это также облегчит ваши усилия по тестированию.

PS: я являюсь комитетом по робогуйце, поэтому я частично ;-)

PPS - июнь 2013 года. Последние разработки вызвали другие рамки на основе на основе инъекций аннотации/зависимостей, которые выполняют большую часть работы во время сборки и, следовательно, избегают удара по производительности отражения во время выполнения (это медленное на Android) и, следовательно, более подходящие для Производительность Критическая работа - Проверьте Dagger и Androidannotation, если вы заинтересованы в этом.

На самом деле Google не поощряет использование Guice или Roboguice в приложениях Android из -за накладных расходов на память.

Источник:

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

5.11.2014 РЕДАКТИРОВАТЬ:

Для Android есть выделенная библиотека быстрого впрыска зависимостей. Я вижу все больше и больше людей, использующих это:

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

13.04.2015 Изменить:Google выпустила свою собственную версию Dagger, которая не использует отражение во время выполнения:http://google.github.io/dagger/

Вы знаете, есть Робогюс? Это Guice для Android.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top