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+@InstallIndefine dónde viven las vinculaciones.@Providesconstruye tipos de bibliotecas o complejos.@Bindsasigna 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+@InstallInindica a Hilt cómo proporcionar otros tipos.@Providesconstruye objetos de bibliotecas o complejos;@Bindsasigna interfaces.- Haga coincidir ámbitos como
@Singletoncon 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
- ¿Por qué usar inyección de dependencias?
- Configurar Hilt
- Módulos y proveedores
- Inyectar en ViewModels