Cuándo usar posvalor [duplicado]

Nov 01 2020

En el siguiente fragmento de código:

    viewModelScope.launch {
  
        isLoading.postValue(true) 
            
        .....
   }

estamos en el hilo principal, porque viewModelScope.launchse ejecuta en el hilo principal por defecto, lo mismo queviewModelScope.launch(dispatchers.main)

En el hilo principal, ¿tiene sentido usar postValue? quiero decir, no debería ser como:isLoading.value = true ?

He encontrado un montón de este fragmento de código en Internet, ¿es correcto o incorrecto?

Respuestas

MerthanE Nov 02 2020 at 03:34

Según la documentación:

Basado en la documentación:

valor ajustado():

Establece el valor. Si hay observadores activos, se les enviará el valor. Este método debe llamarse desde el hilo principal.

postValue ():

Publica una tarea en un hilo principal para establecer el valor dado. Si llamó a este método varias veces antes de que un hilo principal ejecutara una tarea publicada, solo se enviaría el último valor.

Por lo tanto, siempre usaría setValue cuando sea posible, en su caso, como habrá notado, setValue es mejor porque puede estar seguro de que siempre estará en el hilo principal.

Sin embargo, postValue también se puede llamar desde Main Thread, pero funcionará un poco peor.

ZakariaHajja Nov 01 2020 at 19:10

Normalmente, hay dos formas de establecer un valor de un objeto liveData:

  • setValue ==> hilo principal
  • postValue ==> otros hilos