Имеет ли смысл использовать Guice для Android
Вопрос
Я обсуждаю использование 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.