La plataforma Android proporciona un conjunto común de patrones de diseño, y con los limitados recursos de hardware que se obtienen en comparación con las aplicaciones web, a menudo es mejor utilizarlos directamente en el código de producción. Hay otros marcos que tipo de "envolver" la plataforma base; vale la pena investigar si tiene un propósito específico (o tal vez para crear prototipos/experimentar), pero para el mejor nivel de soporte generalmente es mejor quedarse con los componentes estándar.
Este es un gran recurso cuando se trabaja en soluciones de interfaz de usuario: http://www.androidpatterns.com/
Específicamente para DI: Hay un Spring framework for Android, he tenido un juego con ella y se ve bastante prometedor. Ya has mencionado a Roboguice como otra alternativa a esto. Sin embargo, para evitar el rendimiento y la sobrecarga de la biblioteca, todavía encuentro que el enfoque más fácil es escribir una clase simple basada en la reflexión que registre e inserte dependencias dentro de mi propio código. Similar a this approach, excepto que generalmente muevo el código de inyección a un singleton separado y lo hago referencia desde allí.
Según mi experiencia, la mayoría de las ofertas de terceros todavía no son lo suficientemente maduras como para confiar en ellas y realmente no le dan mucho más de lo que ofrece la plataforma base. Sin embargo, están progresando constantemente, así que asegúrese de experimentar con los grandes nombres de vez en cuando.
Esas son buenas para cualquier aplicación de interfaz de usuario, y DI es particularmente útil para la capacidad de prueba. Pero la mayoría de los patrones de diseño son situacionales, por lo que tendrá que escribir un código y descubrir algunos problemas de menor nivel que quiera resolver antes de encontrar muchos patrones para ser útil. –
Si busca aquí ["arquitectura de patrones de diseño android"] (http://stackoverflow.com/search?q=android+design-patterns+architecture) puede encontrar alguna guía. – DOK
Si observa el libro GoF verá que los patrones se usarán en varios lugares. Sus actividades pueden ser un patrón de controlador (debería), y el proveedor de contenido será un patrón de acceso a datos. Encontrará otros lugares donde los patrones pueden ser útiles, pero, como se mencionó, depende de la situación en cuanto a los patrones a usar. –