localbroadcastmanager est obsolète, utilisez plutôt des implémentations du modèle observable.
androidx.localbroadcastmanager est déconseillé dans la version 1.1.0
Raison
LocalBroadcastManagerest un bus d'événements à l'échelle de l'application et intègre les violations de couche dans votre application; tout composant peut écouter les événements de tout autre composant. Il hérite des limitations inutiles de cas d'utilisation du système BroadcastManager; les développeurs doivent utiliser Intent même si les objets vivent dans un seul processus et ne le quittent jamais. Pour cette même raison, il ne suit pas BroadcastManager en termes de fonctionnalités.
Ceux-ci s'ajoutent à une expérience de développeur déroutante.
Remplacement
Vous pouvez remplacer l'utilisation de LocalBroadcastManagerpar d'autres implémentations du modèle observable. Selon votre cas d'utilisation, des options appropriées peuvent être LiveDatades flux réactifs.
Avantage de LiveData
Vous pouvez étendre un LiveDataobjet à l'aide du modèle singleton pour envelopper les services système afin qu'ils puissent être partagés dans votre application. L' LiveDataobjet se connecte au service système une fois, puis tout observateur qui a besoin de la ressource peut simplement regarder l' LiveDataobjet.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
La observe()méthode passe le fragment, qui est une instance de LifecycleOwner, comme premier argument. Cela signifie que cet observateur est lié à l' Lifecycleobjet associé au propriétaire, ce qui signifie:
Si l'objet Cycle de vie n'est pas dans un état actif, l'observateur n'est pas appelé même si la valeur change.
Une fois l'objet Cycle de vie détruit, l'observateur est automatiquement supprimé
Le fait que les LiveDataobjets soient sensibles au cycle de vie signifie que vous pouvez les partager entre plusieurs activités, fragments et services.