Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

463
Vistas
Inyectando un CoroutineDispatcher usando Koin

Estaba leyendo la guía de capa de datos de Google y en el segmento vinculado, tienen el siguiente fragmento:

 class NewsRemoteDataSource( private val newsApi: NewsApi, private val ioDispatcher: CoroutineDispatcher ) { /** * Fetches the latest news from the network and returns the result. * This executes on an IO-optimized thread pool, the function is main-safe. */ suspend fun fetchLatestNews(): List<ArticleHeadline> = // Move the execution to an IO-optimized thread since the ApiService // doesn't support coroutines and makes synchronous requests. withContext(ioDispatcher) { newsApi.fetchLatestNews() } } } // Makes news-related network synchronous requests. interface NewsApi { fun fetchLatestNews(): List<ArticleHeadline> }

Inyectar la dependencia de NewsApi usando Koin es bastante sencillo, pero ¿cómo puedo inyectar una instancia de CoroutineDispatcher usando Koin? Usé la función de búsqueda en el sitio web de Koin pero no apareció nada. Una búsqueda ddg filtrada tampoco arroja muchos resultados.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Gracias al enlace de @ADM de los comentarios, logré usar una propiedad con nombre como se sugiere aquí .

En mi caso, primero creo la propiedad named para IO Dispatcher, luego la clase SubjectsLocalDataSource obtiene su dependencia de CoroutineDispatcher usando la get(named("IODispatcher")) y finalmente, SubjectsRepository obtiene su dependencia de fuente de datos usando el clásico get() llamar.

Declaración de SubjectsLocalDataSource:

 class SubjectsLocalDataSource( private val database: AppDatabase, private val ioDispatcher: CoroutineDispatcher )

Declaración de SubjectsRepository:

 class SubjectsRepository(private val subjectsLocalDataSource: SubjectsLocalDataSource)

y finalmente, en mi módulo Koin:

 single(named("IODispatcher")) { Dispatchers.IO } // Repositories single { SubjectsRepository(get()) } // Data sources single { SubjectsLocalDataSource(get(), get(named("IODispatcher"))) }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda