La plate-forme Android fournit un ensemble commun de modèles de conception et, compte tenu des ressources matérielles limitées dont vous disposez par rapport aux applications Web, il est souvent préférable de s'en tenir à leur utilisation directe dans le code de production. Il existe d'autres frameworks qui "enveloppent" en quelque sorte la plate-forme de base ; ils valent la peine d'être examinés si vous avez un objectif spécifique (ou peut-être pour le prototypage/l'expérimentation), mais pour le meilleur niveau de support, il est généralement préférable de s'en tenir aux composants standard.
Il s'agit d'une excellente ressource lorsque vous travaillez sur des solutions d'interface utilisateur : http://www.androidpatterns.com/
Spécifiquement pour DI : Il y a un Cadre Spring pour Android J'ai joué avec et cela semble très prometteur. Vous avez déjà mentionné Roboguice comme une autre alternative. Cependant, pour éviter les surcharges de performance et de bibliothèque, je trouve toujours que l'approche la plus simple est d'écrire une simple classe basée sur la réflexion qui enregistre et injecte les dépendances dans mon propre code. Similaire à cette approche sauf que j'ai l'habitude de déplacer le code d'injection dans un singleton séparé et de le référencer à partir de là.
D'après mon expérience, la plupart des offres de tiers ne sont pas encore assez mûres pour qu'on puisse s'y fier, et elles n'apportent pas grand-chose de plus que ce que la plate-forme de base fournit. Elles sont cependant en constante évolution, alors n'hésitez pas à expérimenter les grands noms de temps en temps.