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
LocalBroadcastManager
est 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 LocalBroadcastManager
par d'autres implémentations du modèle observable. Selon votre cas d'utilisation, des options appropriées peuvent être LiveData
des flux réactifs.
Avantage de LiveData
Vous pouvez étendre un LiveData
objet à l'aide du modèle singleton pour envelopper les services système afin qu'ils puissent être partagés dans votre application. L' LiveData
objet se connecte au service système une fois, puis tout observateur qui a besoin de la ressource peut simplement regarder l' LiveData
objet.
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' Lifecycle
objet 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 LiveData
objets soient sensibles au cycle de vie signifie que vous pouvez les partager entre plusieurs activités, fragments et services.