localbroadcastmanager ist veraltet. Verwenden Sie stattdessen Implementierungen des beobachtbaren Musters.
androidx.localbroadcastmanager wird in Version 1.1.0 nicht mehr unterstützt
Grund
LocalBroadcastManagerist ein anwendungsweiter Ereignisbus und berücksichtigt Ebenenverletzungen in Ihrer App. Jede Komponente kann Ereignisse von jeder anderen Komponente abhören. Es erbt unnötige Anwendungsfallbeschränkungen des Systems BroadcastManager. Entwickler müssen Intent verwenden, obwohl Objekte nur in einem Prozess leben und ihn niemals verlassen. Aus dem gleichen Grund folgt es nicht dem funktionsweisen BroadcastManager.
Dies führt zu einer verwirrenden Entwicklererfahrung.
Ersatz
Sie können die Verwendung von LocalBroadcastManagerdurch andere Implementierungen des beobachtbaren Musters ersetzen. Abhängig von Ihrem Anwendungsfall können geeignete Optionen LiveDataoder reaktive Streams sein.
Vorteil von LiveData
Sie können ein LiveDataObjekt mithilfe des Singleton-Musters erweitern, um Systemdienste so zu verpacken, dass sie in Ihrer App freigegeben werden können. Das LiveDataObjekt stellt einmal eine Verbindung zum Systemdienst her, und dann kann jeder Beobachter, der die Ressource benötigt, das LiveDataObjekt einfach beobachten .
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
Die observe()Methode übergibt das Fragment, bei dem es sich um eine Instanz handelt LifecycleOwner, als erstes Argument. Dies bedeutet, dass dieser Beobachter an das Lifecycledem Eigentümer zugeordnete Objekt gebunden ist , was bedeutet:
Wenn sich das Lifecycle-Objekt nicht in einem aktiven Zustand befindet, wird der Beobachter auch dann nicht aufgerufen, wenn sich der Wert ändert.
Nachdem das Lifecycle-Objekt zerstört wurde, wird der Beobachter automatisch entfernt
Die Tatsache, dass LiveDataObjekte lebenszyklusabhängig sind, bedeutet, dass Sie sie für mehrere Aktivitäten, Fragmente und Dienste freigeben können.