2011-06-05 11 views
42

Estoy trabajando en un proyecto de Android y me gustaría saber cualquier recomendación sobre la buena arquitectura para construir una aplicación de Android.¿Cómo usar la inyección de dependencia con Roboguice?

Quiero usar la inyección de dependencia usando Roboguice y he estado leyendo sobre el patrón MVVM o el patrón MVC (Android MVVM Design Pattern Examples).

También sé que roboguice tiene una función de elevación y manejo del Evento basado en contexto muy buena que podría ser muy comprobable ya que el código está desacoplado.

¿Alguna recomendación sobre un patrón de diseño en funcionamiento? ¿una arquitectura comprobable y escalable con la que haya trabajado o desarrollado?

+2

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. –

+0

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

+0

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. –

Respuesta

18

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.

+5

¡Excelente respuesta! Spring Android es genial, pero actualmente solo proporciona libs de integración, no hay DI allí AFAIK. RoboGuice también es bueno, pero la Reflection API viene con un costo de rendimiento en algunos dispositivos. [AndroidAnnotations] (http://github.com/excilys/androidannotations) hace el mismo tipo de cosas, en tiempo de compilación. Me encantaría escuchar sus comentarios sobre eso :). –

+1

AndroidAnnotations se ve muy interesante. Lo he marcado como favorito para la próxima vez que estoy trabajando en una aplicación de Android, y dejaré algunos comentarios una vez que tenga la oportunidad de probarlo. – seanhodges

Cuestiones relacionadas