Inyección de dependencia en Android | Joe Rakhimov | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Inyección de dependencia en Android

teacher avatar Joe Rakhimov

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      ¡Hola!

      0:47

    • 2.

      EJEMPLO

      1:45

    • 3.

      Dependencia

      1:22

    • 4.

      Inyección de dependencia

      2:28

    • 5.

      Localizador de servicio

      2:11

    • 6.

      Daga y Hilt

      1:01

    • 7.

      Código

      0:57

    • 8.

      Sin inyección de dependencia

      3:02

    • 9.

      Con inyección de dependencia

      2:41

    • 10.

      Flujo de trabajo de Hilt

      1:52

    • 11.

      ViewModel

      1:31

    • 12.

      Vinculación

      2:34

    • 13.

      Singleton

      1:08

    • 14.

      CONTEXTO

      1:07

    • 15.

      Nombrado

      1:21

    • 16.

      Calificador

      0:57

    • 17.

      Componente

      3:13

    • 18.

      Gracias

      0:38

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

15

Estudiantes

--

Proyectos

Acerca de esta clase

¿Te preguntas qué es la dependencia y la inyección de dependencia, por qué necesitas inyección de dependencia en tu proyecto y cómo implementarlo con Hilt? Entonces estás en el lugar correcto y este curso es para ti.

En este curso, aprenderás lo siguiente:

  • qué son la inyección de dependencia

  • cómo implementar la inyección de dependencia

  • diferentes características de la biblioteca de Hilt

La inyección de dependencia es una técnica importante para crear código:

  • Más mantenimiento

  • Evite replicación de código

  • Mejora la gestión del ciclo de vida

  • Más probable

  • Más legible

Hilt es una biblioteca de inyección de dependencia que está construida sobre Dagger y ayuda a implementar inyección de dependencia sin mucho código de boilerplate

Al final de la asignatura, podrás lo siguiente:

  • configurar la biblioteca de Hilt en el proyecto de Android de Studio

  • crear un módulo para proporcionar dependencias

  • proporcionar dependencias usando @Provide

  • vincular dependencias con la anotación de @Binds

  • inyectar dependencias usando anotación de @Inject

  • integrar Hilt con ViewModel

  • para proporcionar la misma instancia con anotación de @Singleton

  • inyectar Contexto con Hilt

  • proporcionar instancias de los mismos tipos con anotaciones @Named y @Qualifier

La implementación de inyección de dependencia se demuestra en el ejemplo de una aplicación sencilla de previsión meteorológica. Después de tomar este curso, podrás implementar la inyección de dependencia con Hilt en tu proyecto de Android Studio.

Conoce a tu profesor(a)

Teacher Profile Image

Joe Rakhimov

Profesor(a)
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. ¡Hola!: Bienvenido al curso de inyección de dependencia en Android usando Salud. Mi nombre es Garrett o hue. Estoy desarrollando aplicaciones para Android desde 2013. En este curso, vas a aprender qué es la dependencia, por qué puede ser un problema y cómo resolver ese problema usando la inyección de dependencia. Aprenderás a implementar la inyección de dependencia usando una biblioteca llamada hilt. Además, vamos a crear una aplicación simple de pronóstico del tiempo usando empuñadura. Para poder realizar este curso, debes estar familiarizado con el desarrollo de Android. Vamos a utilizar el lenguaje de programación Kotlin. También. Deberías tener Android Studio instalado en tu máquina. Si estás listo, comencemos el curso. 2. Por ejemplo: Comencemos el curso con ejemplo rápido de dependencia e inyección de dependencia. Aquí voy a mostrar ejemplo de dependencia. Esta es la clase de motores. Tiene función de arranque que trae motor está arrancando. Y tenemos la clase Car, que crea instancia de motor. Y tiene función de arranque que imprime coche está arrancando y arranca motor. También tenemos función principal donde creamos instancia de coche y empezamos. El problema está aquí, esta línea, estamos creando instancias de motor dentro del automóvil. En este caso, el motor es dependencia. El automóvil depende del vidrio del motor. ¿Cómo podemos resolver este problema? Se puede resolver. Moviendo, creando instancia fuera de dependiente, movemos a función principal y pasamos una instancia al carro. Ahora estamos parsing motor instancia en coche usando su constructor. Esto se llama inyección de dependencia. Ejecutemos este código y veamos el resultado. El código está funcionando. Y este fue un ejemplo rápido de lo que es la dependencia y la inyección de dependencia. 3. Dependencia: En este video, veremos qué es la dependencia. La dependencia ocurre cuando un componente depende de otro componente. Por ejemplo, una clase depende de otra clase. Este ejemplo, estamos creando instancias de motor dentro del coche. Entonces el auto depende del motor. En este caso, el automóvil es dependiente, el antígeno es dependencia. Se puede decir lo que pueden ser problemas con la Dependencia. El primer problema se llama replicación. Estamos creando motor de instancia dentro del coche. Entonces tal vez necesitemos crear tales instancias en muchos lugares. Esto da como resultado la replicación de código. Otro problema es la mantenibilidad. Imagínese la situación cuando los motores constructor funcionan con cadenas. Entonces necesitamos cambiar el código en todas partes donde estemos creando instancias de motor. Otro problema es la administración del ciclo de vida. Aquí estamos creando instancias de motor dentro del coche. Esto significa que cuando se retira el automóvil, también se retira el motor. Estos problemas se pueden resolver mediante el uso de inyección de dependencia. 4. Inyección de dependencia: En este video, veremos qué es la inyección de dependencia. La inyección de dependencia es crear e inyectar dependencia. Este ejemplo, estamos creando una instancia de motor en función principal y pasando en dos coches función constructora. Y a esto se le llama inyección de dependencia. La inyección de dependencia resuelve problemas con la dependencia. Es replicación de código fuente mediante creación de dependencia en un solo lugar. En este ejemplo, estamos creando instancias de motor en función principal y pasando al objeto coche. Si necesitamos cambiar y su función constructora, necesitamos cambiar el código en un solo lugar. Así que esto mejora la capacidad de mantenimiento del código. La inyección de dependencia resuelve el problema con la administración del ciclo de vida. Aquí estamos creando instancias de motor y objetos de autos que pasan. Entonces cuando se retira el auto y no se retira, así tenemos control sobre el ciclo de vida. Hay tres tipos de inyección de dependencia, constructor, inyección de campo y método. Como hemos visto en el ejemplo anterior, se crea la dependencia y pasa a la función constructora. Esto se llama inyección de constructor. Se prefiere este tipo ya que podemos hacer que la dependencia sea privada para hacerla inmutable. Otro tipo es la inyección llena. En este caso, inyectamos dependencia en campo. Este tipo de inyección se utiliza cuando constructor no está disponible. Ejemplo es el sistema Android. No tenemos control sobre los componentes de Android como actividad, fragmento y etc. Otro tipo es el método de inyección. Este tipo de inyección se utiliza cuando no tenemos control sobre constructor. Y queremos inyectar múltiples dependencias a la vez. 5. Localizador de servicio: En este video, hablaremos sobre el localizador de servicios. Hay dos formas de resolver el problema de dependencia. primera forma es la inyección de dependencia, donde las dependencias se inyectan en dependientes. Con el fin de implementar la inyección de dependencia, podemos usar la biblioteca curada. Otra forma de resolver problema de dependencia es la búsqueda de dependencias, donde las dependencias se recuperan desde fuera. llamado localizador de servicios, que devuelve dependencias por su nombre. Déjame mostrarte un ejemplo para el localizador de servicios. Aquí tenemos motor de cristal con función estrella que imprime el motor está arrancando. Aquí tenemos objeto llamado localizador de servicios, que crea instancia de motor y función, que devuelve dependencias por su nombre. Por ejemplo, devuelve instancia de motor cuando el nombre es igual a dos motores. Si no se encuentra nombre, arroja una excepción de argumento ilegal con dependencia de mensaje con la siguiente clave que no se ha encontrado en la clase de automóvil. instancia del motor se recupera del localizador de servicios usando la función de búsqueda con la clave del motor. Entonces arranca la función de impresión del coche está arrancando y arranca el motor. En función principal, creamos instancia de motor y lo llamamos función de inicio. El localizador de servicios es un patrón diseñado que da acceso al objeto por su nombre. Permite crear objetos en un solo lugar y obtenerlos por sus nombres. Se resuelve el problema de dependencia mediante la creación de instancia en un solo lugar. Por lo que no hay aplicación de código. También crea dependencia en el exterior. Por lo tanto, el cambio en la dependencia no da como resultado un cambio en dependiente. Además, el ciclo de vida de la dependencia no está ligado al ciclo de vida de los dependientes. El localizador de servicios es utilizado por una biblioteca llamada coin, que está fuera del alcance de este curso. 6. Daga y Hilt: Daga y una daga es biblioteca de inyección de dependencia, lo que facilita la implementación de la inyección de dependencia. Reduce mucho código repetitivo al implementar la inyección de dependencia. Q también es biblioteca de inyección de dependencia, que se construye sobre la daga y facilita el uso de daga. Cómo funciona. Dagger usa procesador de anotaciones para analizar el código, para identificar dónde inyectar dependencias y qué tipo de dependencias se requieren. Entonces daga generar código fuente cual es compilado por compilador. Aquí está la biblioteca de inyección de dependencia, que se construye sobre la daga. Permite escribir menos código al tener contenedores predefinidos para las clases de Android también facilita la inyección de dependencias en el modelo de vista y la inyección del modelo de vista en sí mismo. 7. Código: El código para este curso está disponible en la siguiente URL. Si abres esa URL, puedes encontrar el repositorio de código en GitHub, que contiene código para una aplicación simple de pronóstico del tiempo. Para clonar este repositorio, haz clic en Código, haz clic aquí para copiar la URL y abrir Android Studio. En Android Studio, haz clic en Archivo. Nuevo Proyecto a partir del control de versiones. Aquí, pega la URL que copiamos. Y aquí debes establecer el directorio donde quieres guardar el proyecto y hacer clic en Clonar. Después de clonar el código, puedes ejecutar esta aplicación en tu dispositivo o emulador. 8. Sin inyección de dependencia: En este video, voy a mostrar código sin inyección de dependencia. Vamos a abrir Android Studio. Ya hemos clonado código del repositorio. Y ahora estamos en rama maestra. Tenemos que verificar no hay sucursal DI. Esta rama contiene código sin inyección de dependencia. En primer lugar, abramos AndroidManifest.xml. Aquí podemos ver que tiene un permiso para la conexión a internet, utiliza el tráfico de texto claro se envía a través para poder usar la conexión HTTP. Y tenemos una pantalla llamada Actividad de pronóstico. En la actividad de previsión, estamos creando instancias de retrofit usando URL base. Y estamos configurando nuestra fábrica de convertidores JSON para convertir datos JSON en objeto. Al final, estamos creando instancia de interfaz API. En el método onCreate, estamos configurando un XML de diseño como vista de contenido. Vamos a abrirlo. Aquí tenemos una vista de reciclador para mostrar los datos de pronóstico. Entonces estamos llamando al método de pronóstico del jet para obtener el pronóstico del tiempo. En el método jet forecast, estamos creando co-rutina para obtener el pronóstico del tiempo. Y luego estamos cambiando dos despachador principal para mostrar pronóstico del tiempo. En el método de pronóstico corto, estamos configurando el nombre de la ubicación es el título, y luego verificando si los datos diarios del pronóstico están disponibles. Si no es nulo, estamos configurando el administrador de diseño para la vista del reciclador. Y entonces estamos configurando pronósticos adaptador. El adaptador recibe los datos de previsión y los establece en el diseño, que es la previsión del elemento de lista. Contiene tres, tarda dos años en mostrar la fecha, la temperatura y el estado. En build gradle se han agregado dependencias de archivos para retrofit y retrofit y deshonrar bibliotecas convertidora. Vamos a abrir la interfaz API. E incluye una función que devuelve pronósticos, respuesta, campañas de respuesta de pronóstico, información de ubicación diaria actual para los datos de pronóstico. Ahora, vamos a ejecutar esta aplicación y ver el resultado. Aquí puede ver la aplicación que muestra el nombre de la ubicación en el título y los datos de pronóstico del tiempo como una lista. 9. Con inyección de dependencia: En este video, veremos código con inyección de dependencia. En video anterior, hemos visto código sin inyección de dependencia donde creamos una instancia de API en la actividad de pronóstico. Entonces API es dependencia y la actividad pronosticada es dependiente. Ahora cambiemos a rama llamada DI, que contiene código con inyección de dependencia. Para poder utilizar aquí biblioteca, se debe agregar al proyecto. Déjenme mostrar cómo se ha agregado. En primer lugar, vamos a abrir build gradle file. Aquí podemos ver que se ha agregado la biblioteca plug-in para VIH. Vamos a abrir Build Gradle file for app module. Y se aplicó plug-in para su biblioteca. Además, necesitamos agregar el procesador de anotaciones Kotlin para poder usar la biblioteca heal. Se aseguró de que el proyecto usa Java 1.8 ya que lo requiere curado. Después agregamos dependencia para biblioteca sanada. Y agregamos esto para permitir que las referencias generen código. siguiente paso es crear una clase llamada App, que extiende la aplicación y aplicación Android curada anotada. Esta anotación le dice a heel que genere código de inyección de dependencia. Abra AndroidManifest.xml y declare la aplicación usando el atributo name. Dentro del paquete IP, creamos una clase de módulo que se anota con anotaciones instaladas en y módulo. Dentro de este módulo creamos la función que se anota con proporciona un paciente y proporciona una instancia API que se inyectará en la actividad de pronóstico. La actividad de pronóstico se anota con punto de entrada de Android para inyectar dependencias en ella. Aquí estamos inyectando instancia de un chico con anotación Inyectar. Entonces no lo estamos creando dentro de la actividad de pronóstico. Ahora, vamos a ejecutar este código y ver el resultado. Aquí podemos ver la misma aplicación, pero esta vez implementamos la inyección de dependencia. 10. Flujo de trabajo: En este video, voy a mostrar cómo funciona la salud. Empecemos con la clase AP, que extiende la aplicación y utiliza la anotación de aplicaciones de Android curada. Anotación dice aquí para generar código de inyección de dependencia incluyendo componente singleton. El componente Singleton es un contenedor de dependencia a nivel de aplicación, que inyecta dependencias. En la clase App Model, estamos usando la anotación de módulo para decirle que el módulo de aplicación proporciona dependencias instaladas en la anotación se utiliza para indicar a qué módulo de aplicación componente proporciona dependencias. En este caso, un módulo proporciona dependencias para el componente singleton, que es el contenedor de dependencia a nivel de aplicación. El módulo de la aplicación proporciona dependencia como instancia de API usando proporciona anotación. En la actividad de previsión, la anotación del punto de entrada de Android se utiliza para crear el componente de actividad, que es hijo del componente singleton. Entonces esto significa que el componente de actividad para pronósticos de actividad tiene acceso a dependencias al componente singleton. Mediante el uso de Injection anotación, podemos inyectar instancia de API. El flujo de trabajo general parece que este módulo de aplicación proporciona instancia de API a componente singleton. El componente de actividad de la actividad de previsión tiene acceso a dependencias de componentes singleton e inyecta instancias de dependencias de API usando la anotación Injection. 11. ViewModel: En este video, voy a mostrar cómo inyectar dependencias en el modelo de vista. En primer lugar, abramos módulos, construyamos un archivo gradle y agreguemos dependencia para extensiones de Kotlin para artefactos de actividad. Dentro del modelo de vista de pronóstico, creamos LiveData mutables para la respuesta del pronóstico. Y creamos LiveData, que será observado por la actividad pronosticada. Cuando se inicializa el modelo de previsión. Sin embargo, se llama método de pronóstico. El método de pronóstico crea corutina, que se borra. Cuando se borra este modelo de vista. Insights es un alcance corrutinario. Obtenemos los datos del pronóstico y actualizamos LiveData mutable. En la actividad de previsión, inyectamos modelo de vista de previsión no usando la anotación Inyectar, sino usando la API del proveedor ViewModel. De lo contrario, tendríamos múltiples instancias de modelo de vista. Aquí establecemos observador para los datos de pronóstico del tiempo, que llama mostrar método de pronóstico en Actualización. Ahora, ejecutemos esta aplicación y veamos el resultado. Como puedes ver está funcionando. Pero esta vez estamos obteniendo datos en modelo de vista en lugar de actividad. 12. Encuadra: En este video, voy a mostrar cómo usar la anotación de los lazos. Ahora creamos repositorio de datos, que sirve como una única fuente de datos. Para ello, creamos una interfaz llamada repositorio con una función, get forecast. Es la función de suspensión que devuelve la respuesta del pronóstico. Creamos una clase llamada impulso repositorio, que es la implementación de la interfaz de repositorio. Y recibe instancia de API para implementar el método get forecast. En la clase de módulo de aplicación, creamos una función que proporciona instancia de implementación repositorio cuando se solicita repositorio. Aquí no estamos obteniendo instancia de API y busing a la implementación del repositorio. En videos anteriores, utilizamos proporciona anotación para proporcionar dependencia. Pero en este video, me gustaría mostrar otra forma de brindar dependencia. Para ello, creamos otro módulo que proporciona dependencias para el componente singleton. Y en este caso, utilizamos ataduras de saneamiento para brindar dependencia. Aquí creamos una nueva función que proporciona instancia de implementación repositorio cuando se solicita repositorio. Cuando usamos ataduras de saneamiento, la implementación de la función es proporcionada por empuñadura. En la implementación del repositorio, habilitamos este fragmento de código para poder inyectar API cuando usamos el saneamiento de los vinculantes, la implementación de la función es proporcionada por la salud. Es por eso que necesitamos usar Injectar anotación en función constructora para inyectar instancia de API. En previsión modelas, inyectamos repositorio en lugar de API, sirve a una única fuente de datos. Ahora, vamos a ejecutar esta aplicación y ver el resultado. Como podemos ver, está funcionando de la misma manera. Pero esta vez usamos repositorio como una única fuente de datos. Y también utilizamos el saneamiento buy-in para vincular la dependencia. 13. Singleton: En este video, voy a mostrar cómo proporcionar la misma instancia cuando se solicita dependencia. El módulo proporciona dependencias para el componente singleton y crea instancias cada vez que se solicita dependencia. Para verificar esto, podemos inyectar instancia de API e iniciar sesión como una cadena. Hacemos lo mismo en repositorio en clase masiva. Ahora vamos a ejecutar este código y ver el resultado. Te sientes abierto logcat, podemos ver que las instancias de API no son las mismas. Con el fin de maquillar módulo para devolver la misma instancia cada vez que podamos usar anotación singleton. Esta anotación le dice a healed que cree solo una instancia en el contenedor de dependencia de componentes singleton. Ahora vamos a ejecutar este código y ver el resultado. Esta vez podemos ver que las instancias son las mismas. 14. CONTEXTO: En este video, voy a mostrar cómo inyectar contexto. En primer lugar, necesitamos agregar dependencia para interceptor http, verificador de color. En el módulo app, creamos instancia de interceptor de chakras, que requiere contexto. Podemos obtener contexto usando la anotación de contextos de aplicación. Luego inyectamos interceptor de chocolate en función donde creamos una instancia de un cliente HTTP OK. Luego proporcionamos un cliente HTTP en una función donde creamos instancia de retrofit. Ahora, vamos a ejecutar este código y ver el resultado. Después de correr, abra el cajón de navegación y haga clic en la notificación, que dice que la grabación es actividad GTP. Y aquí podemos ver la lista de peticiones que se ha enviado al backend. 15. Llamado: En este video, voy a mostrar cómo proporcionar instancias del mismo tipo con nombre anotación. En primer lugar, abrir módulos construidos archivo Gradle y agregar dependencia para interceptor de registro HTTP. Esta biblioteca registra las solicitudes HTTP en logcat. Luego abra la clase de módulo y agregue la función, que proporciona otro interceptor de inicio de sesión. Y ahora estamos brindando dos instancias al mismo tiempo. Interceptor. Cuando inyectamos dependencia, heel debe saber qué instancia nos gustaría inyectar. Para ello se utiliza anotación con nombre. Aquí estamos configurando nombrelo anotación con clave de interceptor de inicio de sesión. Para el interceptor Tucker, estamos usando nombre y anotación con clave interceptor http. Cuando estamos obteniendo esas instancias, debemos usar la misma anotación con la misma clave. Y aquí estamos configurando interceptores HTTP para el cliente HTTP. Ahora vamos a ejecutar esta aplicación y ver el resultado. Ahora, podemos ver log para solicitudes HTTP en logcat. 16. Calificador: En este video, voy a mostrar otra forma de cómo proporcionar instancias del mismo tipo usando anotaciones personalizadas. En el archivo del módulo de la aplicación, creamos dos anotaciones personalizadas usando anotación de calificador. Usando anotación de retención, hacemos que esta anotación se almacene en salida binaria. Y creamos anotaciones, http e interceptor de inicio de sesión. Aquí proporcionamos instancias de interceptor usando anotaciones personalizadas en lugar de anotación de ID de nombre. También reemplazamos la anotación name it con anotación personalizada cuando obtenemos esas instancias. Ahora, vamos a ejecutar esta aplicación y ver el resultado. Y podemos ver mismo resultado, log de peticiones HTTP en logcat. 17. Componente: En este video, hablaremos de componentes. Una de las ventajas de la biblioteca curada, contiene componentes predefinidos. Los componentes son contenedores de dependencias que inyectan dependencias. Cada componente está ligado a algún ciclo de vida en la aplicación Android. Aquí podemos ver jerarquía de componentes y componente principal es componente singleton. Está disponible en toda la aplicación. Se crea cuando se crea la aplicación, se destruye cuando se destruye la aplicación. Lo mismo se aplica a otros componentes, por ejemplo , componente de actividad se crea cuando se crea y destruye la actividad. Cuando se destruye la actividad. Esto es útil cuando necesitamos dependencia solo en una actividad, no en toda la aplicación. De acuerdo con esta jerarquía, las dependencias del componente singleton están disponibles para el componente de actividad, pero las dependencias del componente de actividad no están disponibles para el componente singleton u otros componentes como componente ViewModel porque es un componente hermano. Anotación anterior, cada componente se usa para proporcionar una sola instancia de dependencia, por ejemplo, anotación singleton para el componente singleton o anotación de esculpir actividad se usa para el componente de actividad. Vamos a crear un nuevo módulo que proporcione dependencias para el componente de actividad. En primer lugar, abrir en módulos, construir el archivo Gradle y agregar dependencia para la biblioteca Picasso. Se utiliza para cargar la imagen. Después en el XML de pronóstico de elemento de lista, agregamos nuevo ImageView para mostrar el icono para la condición meteorológica. Luego creamos una nueva interfaz llamada image loader, que tiene una función para cargar la imagen de URL en imágenes. Después de eso, creamos la implementación del cargador de imágenes llamado Picasso image loader, e implementa la función load image mediante el uso de la biblioteca Picasso. Después de eso, creamos un nuevo modelo llamado módulo de actividad, que proporcionan dependencias. Para componente de actividad. Tiene una función y proporciona porque así cargador de imágenes, cuando se solicita cargador de imágenes. Aquí estamos usando la anotación de esculpir actividad para usar una instancia de cargador de imágenes. En la actividad de pronóstico, estamos inyectando cargador de imágenes y pasando al adaptador de pronósticos. En el adaptador de pronóstico, obtenemos ese cargador de imágenes y lo usamos para cargar la imagen de URL en ImageView. Ejecutemos este código y veamos el resultado. Como podemos ver ahora, está mostrando íconos para pronósticos meteorológicos, condiciones. 18. Gracias: Este es el final de este curso donde aprendes qué dependencia e inyección de dependencia. Aprenderás a configurar sanados para implementar inyección de dependencia usando diferentes futuros de aclamados. Como bono, me gustaría brindar preguntas de entrevista sobre inyección de dependencia y sanado. Es archivo PDF con preguntas y respuestas y lo puedes descargar de la sección de recursos de este video. Quiero darle las gracias por ver este curso. Espero que te haya gustado y nos veamos en mis próximos cursos.