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

#android #guice #roboguice

#Android #guice #roboguice

Вопрос:

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

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

Комментарии:

1. Android был частью приобретения Android-стартапа Энди Рубина, и к тому времени, когда Google был вовлечен, база кода была хорошо налажена, поэтому неудивительно, что он, возможно, не использовал платформу внедрения зависимостей Google.

Ответ №1:

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

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

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

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

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

PS: Я являюсь коммиттером в RoboGuice, поэтому я неравнодушен 😉

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

Комментарии:

1. 1 для «PPS» и ссылки на примечания Dagger и AndroidAnnotations

Ответ №2:

На самом деле 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 выпустил собственную версию dagger, которая не использует отражение во время выполнения: http://google.github.io/dagger /

Ответ №3:

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

Комментарии:

1. К сожалению, RoboGuice больше не поддерживается (по состоянию на август 2016 года)

Ответ №4:

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

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

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