Подтвердить что ты не робот

Имеет ли смысл использовать Guice для Android

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

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

4b9b3361

Ответ 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.