transformations studio room livedata example data combine android oop android-architecture-components android-livedata

studio - mutable live data android



¿Por qué hay una subclase MutableLiveData separada de LiveData? (1)

Parece que MutableLiveData diferencia de LiveData solo al hacer setValue() los setValue() y postValue() , mientras que en LiveData están protegidos.

¿Cuáles son algunas razones para hacer una clase separada para este cambio y no simplemente definir esos métodos como públicos en el LiveData sí?

En términos generales, ¿es esta forma de herencia (aumentar la visibilidad de ciertos métodos el único cambio) una práctica bien conocida y cuáles son algunos escenarios en los que puede ser útil (suponiendo que tengamos acceso a todo el código)?


En LiveData - Documentación para desarrolladores de Android , puede ver que para los LiveData , setValue() y postValue() no son públicos.

Mientras que, en MutableLiveData - Android Developer Documentation , puedes ver que MutableLiveData extiende LiveData internamente y también los dos métodos mágicos de LiveData están disponibles públicamente en este y son setValue() y postValue() .

setValue() : establezca el valor y envíe el valor a todos los observadores activos, debe llamarse desde el hilo principal .

postValue() : publicar una tarea en el subproceso principal para anular el valor establecido por setValue() , debe llamarse desde el subproceso en segundo plano .

Por lo tanto, LiveData es inmutable . MutableLiveData es LiveData que es mutable y seguro para subprocesos .