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 .