2010-01-25 22 views
36

He estado buscando información en vano sobre cómo usar un contenedor de inyección de dependencias en el desarrollo de Android. Específicamente, cómo anular la creación de un Activity de una manera que también funcionará cuando regrese de ser asesinado (por cualquier razón).Android and Dependency Injection

¿Alguien tiene alguna experiencia en esta área?

+0

Si terminan usando roboguice http://code.google.com/p/roboguice, me encantaría tener su regeneración. Te animo a que te unas al grupo de google y nos digas cómo es tu experiencia. – emmby

Respuesta

25

Parece que puede usar Google Guice 2.0 con Android. También puede consultar roboguice.

Editar:

primavera es also now available for Android

Editar: Roboguice ahora es obsoleto. Puede probar Toothpick como se menciona en los comentarios del desarrollador detrás de Toothpick.

+0

Gracias, parece que roboguice es lo más cerca que voy a conseguirlo. Utiliza la herencia ('GuiceActivity') y realiza la inyección en' setContentView', pero después de verificar el callstack de creación 'Activity' puedo ver que no hay otra manera. –

+0

Por cierto Richard, RoboGuice ahora hace la inyección en dos pasos. Una vez durante onCreate para la mayoría de las inyecciones, y una vez durante setContentView para las inyecciones de View. – emmby

+1

RoboGuice, ahora está en desuso, debe intentarlo en Toothpick, tienen casi la misma API. https://github.com/stephanenicolas/toothpick – Snicolas

3

Quizás también desee considerar Spring ME. Aunque originalmente estaba destinado a Java ME, también he visto informes de personas que lo utilizan para Android. El beneficio sería que tiene un modelo de programación familiar (Spring) sin la penalización: Spring ME tiene una huella de 0k.

+0

Spring ME depende de la generación de código. ¿Ha encontrado algún recurso para integrarlo con el proceso de compilación? Por ejemplo, no puede interferir con mi capacidad para ejecutar como ... Aplicación de Android desde dentro de eclipse. Y el proceso de compilación de ant debiera modificarse para soportarlo también. –

+0

Hola Mark, no estoy del todo seguro de lo que dices. Usamos extensiones Spring IDE para apoyar el desarrollo (finalización, validación, etc.). Puedo ver que si estás usando Ant, las cosas pueden ser un poco más complicadas. Déjame saber si necesitas ayuda. Podríamos hablar de eso (wilfred dot springer at gmail punto com) –

+0

Tratando de encontrarlo ahora para probarlo y no voy a pensar mucho. ¿Todavía se está desarrollando activamente? –

0

También hay un nuevo proyecto de primavera para Android: Tiny Spring. Soluciona los conceptos básicos de la configuración XML pero no hace todo lo que Spring hace.

+1

spring para android no era compatible con ioc para android, solo proporciona A Rest Client y Auth support para acceder a API seguras. –

13

La biblioteca de inyección de dependencia de Android más adecuada es Dagger by Square. Tanto Spring como Guice están diseñados para aplicaciones Java, no para Android. Si su único requisito es la gestión de dependencia simple, Dagger es la mejor opción y tiene soporte para JSR-330.

1

Si está acostumbrado a utilizar Primavera en otros proyectos, que no será muy feliz con primavera para Android (es sólo una biblioteca RESTO con el apoyo de autenticación), de primavera me (flujo de trabajo completamente diferente y reducida featureset) o Tiny Spring (por ejemplo, solo Spring- como configuración).

Sin embargo, podría darle a mi proyecto RoboSpring una oportunidad. De la descripción:

RoboSpring es un puerto (real) del Spring Framework para la plataforma Android. Además, ofrece soporte preliminar para la funcionalidad introducida por RoboGuice, como inyectar referencias Ver en Actividades y más. RoboSpring se basa en la versión 3.1.0 RELEASE de los componentes core, beans, context y aop de Spring. Ofrece las siguientes funciones:

  • componentes de la aplicación Configurar con un archivo de configuración de Spring (XML)
  • Autowire sus componentes Android con granos de primavera el contexto de aplicación.
  • Inyecte el contexto de la aplicación Android en sus Spring Beans.
  • Inyectar vistas en Actividades.
  • ... y más

https://github.com/dthommes/RoboSpring

Cuestiones relacionadas