localbroadcastmanager ist veraltet. Verwenden Sie stattdessen Implementierungen des beobachtbaren Musters.
androidx.localbroadcastmanager
wird in Version 1.1.0 nicht mehr unterstützt
Grund
LocalBroadcastManager
ist 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 LocalBroadcastManager
durch andere Implementierungen des beobachtbaren Musters ersetzen. Abhängig von Ihrem Anwendungsfall können geeignete Optionen LiveData
oder reaktive Streams sein.
Vorteil von LiveData
Sie können ein LiveData
Objekt mithilfe des Singleton-Musters erweitern, um Systemdienste so zu verpacken, dass sie in Ihrer App freigegeben werden können. Das LiveData
Objekt stellt einmal eine Verbindung zum Systemdienst her, und dann kann jeder Beobachter, der die Ressource benötigt, das LiveData
Objekt 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 Lifecycle
dem 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 LiveData
Objekte lebenszyklusabhängig sind, bedeutet, dass Sie sie für mehrere Aktivitäten, Fragmente und Dienste freigeben können.