localbroadcastmanager jest przestarzały, zamiast tego użyj implementacji obserwowalnego wzorca.
androidx.localbroadcastmanager jest przestarzałe w wersji 1.1.0
Powód
LocalBroadcastManagerjest aplikacyjną szyną zdarzeń i obejmuje naruszenia aplikacji w Twojej aplikacji; dowolny komponent może nasłuchiwać zdarzeń z dowolnego innego komponentu. Dziedziczy niepotrzebne ograniczenia przypadków użycia systemu BroadcastManager; programiści muszą korzystać z Intent, nawet jeśli obiekty działają tylko w jednym procesie i nigdy go nie opuszczają. Z tego samego powodu nie jest zgodny z funkcją BroadcastManager pod względem funkcji.
To wszystko powoduje zamieszanie programistów.
Zastąpienie
Możesz zastąpić użycie LocalBroadcastManagerinnymi implementacjami obserwowalnego wzorca. W zależności od przypadku zastosowania odpowiednimi opcjami mogą być LiveDatalub strumienie reaktywne.
Zaleta LiveData
Możesz rozszerzyć LiveDataobiekt za pomocą wzorca singleton, aby zawinąć usługi systemowe, aby można je było udostępnić w aplikacji. Na LiveDatałączy sprzeciw wobec usługi systemowej jednokrotnie, a następnie każdego obserwatora, który potrzebuje zasobu może tylko obserwować LiveDataobiekt.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
observe()Sposób przechodzi do fragmentu, który jest przykładem LifecycleOwner, jak pierwszy argument. Oznacza to, że ten obserwator jest powiązany z Lifecycleobiektem powiązanym z właścicielem, co oznacza:
Jeśli obiekt Lifecycle nie jest w stanie aktywnym, obserwator nie jest wywoływany, nawet jeśli wartość się zmienia.
Po zniszczeniu obiektu Lifecycle obserwator jest automatycznie usuwany
Fakt, że LiveDataobiekty uwzględniają cykl życia, oznacza, że można je udostępniać między wieloma działaniami, fragmentami i usługami.