0Pricing
Android Academy · Lección

Módulos y proveedores

Indique a Hilt cómo crear dependencias

Módulos y proveedores es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

Indicar a Hilt cómo construir objetos

Hilt puede construir automáticamente una clase si su constructor está anotado con @Inject. Sin embargo, para interfaces o tipos que no son de su propiedad, debe indicarle a Hilt cómo hacerlo mediante un Module.

Inyección mediante el constructor

El caso más sencillo: anote el constructor y Hilt sabrá cómo construir la clase.

class Analytics @Inject constructor(
    private val api: ApiService
)

Cuándo no basta la inyección mediante el constructor

No puede anotar el constructor de:

  • Una interface (no tiene constructor).
  • Una clase de una library (por ejemplo, Retrofit o Room).

Estos casos necesitan un módulo.

Definir un módulo

Un @Module indica a Hilt cómo proporcionar tipos. @InstallIn declara a qué componente (ámbito) pertenece.

import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule

@Provides para tipos de bibliotecas

Use @Provides en una función que construya y devuelva la dependencia. Hilt la llama cuando necesita ese tipo.

@Provides
@Singleton
fun provideRetrofit(): Retrofit =
    Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .build()

Los proveedores pueden depender unos de otros

Una función @Provides puede recibir parámetros; Hilt los proporciona desde el grafo.

@Provides
fun provideApi(retrofit: Retrofit): ApiService =
    retrofit.create(ApiService::class.java)

@Binds para interfaces

Para vincular una interfaz con una implementación, use @Binds en un módulo abstracto. Es más eficiente que @Provides para vinculaciones sencillas.

@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
    @Binds
    abstract fun bindRepo(
        impl: NetworkUserRepository
    ): UserRepository
}

@Provides frente a @Binds

  • @Binds — cuando solo asigna una interfaz a una implementación que utiliza inyección mediante el constructor. Función abstracta.
  • @Provides — cuando debe ejecutar código para construir el objeto (por ejemplo, un builder).

Definir el ámbito con @Singleton

Anote un proveedor con un ámbito como @Singleton para que Hilt reutilice una única instancia durante toda la aplicación en lugar de crear una nueva cada vez.

Hacer coincidir el ámbito con el componente

El ámbito debe coincidir con el componente: @Singleton con SingletonComponent, @ActivityScoped con ActivityComponent, y así sucesivamente.

Resumen de los módulos

  • @Module + @InstallIn define dónde viven las vinculaciones.
  • @Provides construye tipos de bibliotecas o complejos.
  • @Binds asigna interfaces a implementaciones.

Comprobación rápida

Compruebe cuánto ha comprendido sobre los módulos y los proveedores.

Resumen

Ha aprendido lo siguiente:

  • La inyección mediante el constructor funciona cuando la clase es de su propiedad.
  • @Module + @InstallIn indica a Hilt cómo proporcionar otros tipos.
  • @Provides construye objetos de bibliotecas o complejos; @Binds asigna interfaces.
  • Haga coincidir ámbitos como @Singleton con su componente.

Preguntas frecuentes

¿La lección «Módulos y proveedores» es gratis?

Sí — el texto completo de «Módulos y proveedores» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Módulos y proveedores»?

Indique a Hilt cómo crear dependencias Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Android Academy?

No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Módulos y proveedores»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Android Academy?

Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ¿Por qué usar inyección de dependencias?
  2. Configurar Hilt
  3. Módulos y proveedores
  4. Inyectar en ViewModels
← Volver a Android Academy