Имеет ли смысл использовать Guice для Android
Я обсуждаю использование guice в проекте Android, который является довольно сложным и имеет много бизнес-логики. Guice кажется подходящим, но всякий раз, когда я начинаю читать его глубже, он начинает выглядеть сложнее, чем нужно.
Одна вещь, которую я не понимаю, - это: если Guice такой замечательный и лучший способ написать Java-код, почему так мало кода для Android, который использует Guice... и почему Google не использовал guice внутренне для Android?
Ответы
Ответ 1
Проблема с демонстрацией сильных сторон схемы внедрения зависимостей заключается в том, что ее невозможно достичь с помощью простого приложения Hello World. Эти рамки демонстрируют свою ценность только в больших системах с большой сложностью. Кроме того, они имеют как-то крутую кривую обучения.
Поэтому вполне нормально, что вы не можете найти достаточно учебников - проектов с открытым исходным кодом, которые используют Guice. Это будет чаще всего использоваться в корпоративных приложениях, которые не публикуются.
Как почему Google не использует Guice, Guice не подходит повсюду. Он добавляет накладные расходы и не имеет смысла использовать его в местах, где он не нужен.
Ответ 2
Guice полностью имеет смысл использовать и фактически используется в целом ряде приложений. Расширение RoboGuice добавляет некоторые тонкости для Android, что делает его сверхпроизводительным в использовании.
На самом деле я не могу представить себе приложение для Android без него. Слишком больно.
Проверьте ссылки на приложения с помощью Roboguice на веб-сайте (например, Google Docs, OpenTable...). Известно, что другие приложения, такие как приложение "Квадрат", напрямую используют Guice.
Это совершенно разумно. Пойдите, сделайте это!
Вместе с Robolectric он также облегчит ваши усилия по тестированию.
PS: Я коммиттер на RoboGuice, поэтому я неполный; -)
PPS - Июнь 2013: Недавние разработки привели к появлению других основанных на аннотации/зависимостей основанных на введении фреймворков, которые выполняют большую часть работы во время сборки и, следовательно, избегают удара производительности во время выполнения (что медленно на Android) и поэтому более подходящий для работы с критичной производительностью - ознакомьтесь с Кинжалом и AndroidAnnotations, если вы заинтересованы в этом.
Ответ 3
На самом деле 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/
Ответ 4
Вы знаете, что есть RoboGuice? Это Guice для Android.