Платформа Android предоставляет общий набор шаблонов проектирования, и при ограниченных аппаратных ресурсах, которые вы получаете по сравнению с веб-приложениями, все еще часто лучше придерживаться их использования непосредственно в рабочем коде.Существуют и другие фреймворки, которые как бы «оборачивают» базовую платформу;на них стоит обратить внимание, если у вас есть конкретная цель (или, возможно, для создания прототипа / эксперимента), но для лучшего уровня поддержки вам лучше всего придерживаться стандартных компонентов.
Это отличный ресурс при работепо решениям для пользовательского интерфейса: http://www.androidpatterns.com/
Специально для DI: есть платформа Spring для Android , я с ней поиграл, и она выглядит довольно многообещающе.Вы уже упоминали Roboguice как другую альтернативу этому.Тем не менее, чтобы избежать повышения производительности и издержек библиотеки, я все же считаю, что самый простой подход - написать простой класс на основе отражений, который регистрирует и внедряет зависимости в моем собственном коде.Подобно этому подходу , за исключением того, что я обычно перемещаю код внедрения в отдельный синглтон и ссылаюсь на него оттуда.
По моему опыту, большинство предложений сторонних производителей еще недостаточно развиты, чтобыположитесь прямо сейчас, и на самом деле вы не получите ничего сверх того, что обеспечивает базовая платформа.Однако они постоянно развиваются, поэтому время от времени экспериментируйте с громкими именами.