Имеет ли смысл использовать Guice для Android - PullRequest
23 голосов
/ 18 октября 2011

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

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

Ответы [ 4 ]

27 голосов
/ 19 октября 2011

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

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

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

В этом есть смысл ... иди делай!

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

PS: я приверженец RoboGuice, поэтому я неравнодушен; -)

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

23 голосов
/ 05 марта 2014

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

Источник:

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

5.11.2014 Редактировать:

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

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

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

13 голосов
/ 19 октября 2011

Вы знаете, что есть RoboGuice ?Это Guice для Android.

12 голосов
/ 19 октября 2011

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

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

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

...