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

179
Vistas
Inicialización de Kotlin CoroutineScope dependiendo de CoroutineContext con getter personalizado

El Android Room with a View - Kotlin de Google Codelab tiene el siguiente fragmento :

 class WordViewModel(application: Application) : AndroidViewModel(application) { // ... private val coroutineContext: CoroutineContext get() = parentJob + Dispatchers.Main private val scope = CoroutineScope(coroutineContext) // ... }

Y por lo que entiendo de esta respuesta, el captador personalizado se evalúa cada vez, mientras que la asignación se evalúa solo en el momento de la construcción. Entonces, en efecto, el scope tomaría un valor que no cambiaría más tarde, entonces, ¿de qué sirve el captador personalizado para coroutineContext ?

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

0

Creo que en este ejemplo podemos deshacernos de

 private val coroutineContext: CoroutineContext get() = parentJob + Dispatchers.Main

y solo escribe

 private val scope = CoroutineScope(parentJob + Dispatchers.Main)

Así que el código de resultado se verá así:

 class WordViewModel(application: Application) : AndroidViewModel(application) { private var parentJob = Job() private val scope = CoroutineScope(parentJob + Dispatchers.Main) // ... }

Supongo que es una cuestión de estilo escribir getter en este caso. Nada cambiará si lo eliminamos.

over 4 years ago · Santiago Trujillo Denunciar

0

La definición de coroutineContext como una propiedad calculada (o captador personalizado) tiene más sentido cuando define un CoroutineScope en un componente con ciclo de vida (es decir, Activity de Android). El ejemplo en el Javadoc se explica por sí mismo:

 class MyActivity : AppCompatActivity(), CoroutineScope { lateinit var job: Job override val coroutineContext: CoroutineContext get() = Dispatchers.Main + job override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) job = Job() } override fun onDestroy() { super.onDestroy() job.cancel() // Cancel job on activity destroy. After destroy all children jobs will be cancelled automatically } }

En este caso, está creando el Job en un método de ciclo de vida, por eso necesita la propiedad computada para devolver el coroutineContext con la instancia de Job creada en onCreate .

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