Question Pourquoi existe-t-il une sous-classe distincte MutableLiveData de LiveData?


Ça ressemble à MutableLiveData diffère de LiveData seulement en faisant le setValue() et postValue() méthodes publiques, alors que dans LiveData ils sont protégés.

Quelles sont les raisons pour créer une classe distincte pour ce changement et ne pas simplement définir ces méthodes comme publiques dans le LiveData lui-même?

D'une manière générale, une telle forme d'héritage (augmenter la visibilité de certaines méthodes étant le seul changement) est-elle une pratique bien connue et quels sont les scénarios où cela peut être utile (en supposant que nous ayons accès à tout le code)?


19
2017-10-18 15:42


origine


Réponses:


Dans LiveData - Documentation du développeur Android, vous pouvez le voir pour LiveData, setValue() Et postValue() les méthodes ne sont pas publiques.

Considérant que, dans MutableLiveData - Documentation pour les développeurs Android, tu peux voir ça, MutableLiveData étend LiveData en interne et aussi les deux méthodes magiques de LiveData est publiquement disponible en cela et ils sont setValue() Et postValue().

setValue() : définir la valeur et envoyer la valeur à tous les observateurs actifs, doit être appelé depuis fil principal.

postValue() : publier une tâche sur le thread principal pour remplacer la valeur définie par setValue(), doit être appelé de fil de fond.

Alors, LiveData est immuable. MutableLiveData est LiveData lequel est mutable Et sans fil.


42
2017-10-18 15:56