web-dev-qa-db-fra.com

ObservableField ou LiveData? Lequel est le meilleur?

J'ai testé Livedata et AAC en général.

Quelle est la principale différence entre LiveData et ObservableField?

Lequel est le meilleur et quand devrais-je utiliser l'un sur l'autre?

13
Rick Prata

La principale différence est que ObservableField<T> n'est pas compatible avec le cycle de vie et il ne peut donc pas y avoir de gestion automatique des abonnements. Tandis que LiveData<T> est sensible au cycle de vie et résout des tonnes de maux de tête avec la gestion des abonnements en ce qui concerne Activity/Fragment Les cycles de la vie.

Il n'y a pas qu'une seule façon de répondre à ce qui est le meilleur à utiliser. C'est un choix personnel, mais je suggère d'utiliser LiveData<T> juste pour gagner du temps et éviter les plantages potentiels.


15
Tomas Jablonskis

LiveData et Observable peuvent être utilisés alternativement. LiveData est conscient du cycle de vie et ne notifiera donc que les observables qui sont "actifs".

Citant la documentation officielle sur https://developer.Android.com/topic/libraries/data-binding/architecture#livedata

Contrairement aux objets qui implémentent Observable, tels que les champs observables, les objets LiveData connaissent le cycle de vie des observateurs abonnés aux modifications des données. Cette connaissance offre de nombreux avantages, qui sont expliqués dans Les avantages de l'utilisation de LiveData. Dans Android Studio version 3.1 et supérieure, vous pouvez remplacer les champs observables par des objets LiveData dans votre code de liaison de données.

Comme mentionné, les deux sont utilisables pour la liaison d'interface utilisateur de manière interchangeable. LiveData est une méthode rapide mais si vous voulez plus de contrôle sur la liaison Obserable est une solution.

Citant la documentation officielle sur https://developer.Android.com/topic/libraries/data-binding/architecture#observable-viewmodel

Dans certaines situations, vous préférerez peut-être utiliser un composant ViewModel qui implémente l'interface Observable plutôt que d'utiliser des objets LiveData, même si vous perdez les capacités de gestion du cycle de vie de LiveData. L'utilisation d'un composant ViewModel qui implémente Observable vous donne plus de contrôle sur les adaptateurs de liaison dans votre application. Par exemple, ce modèle vous donne plus de contrôle sur les notifications lorsque les données changent, il vous permet également de spécifier une méthode personnalisée pour définir la valeur d'un attribut dans la liaison de données bidirectionnelle.

Nous obtenons des options pour personnaliser la liaison en cas de Observable ce qui peut être utile dans certains cas.

La préférence personnelle est d'aller avec LiveData. Dans le cas où une certaine personnalisation ou plus de contrôle est nécessaire sur la liaison, optez pour Obervable

4
Tejas Sherdiwala