localbroadcastmanager è deprecato, utilizzare invece le implementazioni del modello osservabile.
androidx.localbroadcastmanager
è obsoleto nella versione 1.1.0
Motivo
LocalBroadcastManager
è un bus di eventi a livello di applicazione e comprende le violazioni dei livelli nella tua app; qualsiasi componente può ascoltare eventi da qualsiasi altro componente. Eredita inutili limitazioni del caso d'uso del sistema BroadcastManager; gli sviluppatori devono usare Intent anche se gli oggetti vivono in un solo processo e non lo abbandonano mai. Per lo stesso motivo, non segue BroadcastManager per quanto riguarda le funzionalità.
Questi si sommano a un'esperienza di sviluppo confusa.
Sostituzione
È possibile sostituire l'utilizzo di LocalBroadcastManager
con altre implementazioni del modello osservabile. A seconda del caso d'uso, potrebbero essere disponibili opzioni adeguateLiveData
o flussi reattivi.
Vantaggio di LiveData
Puoi estendere un LiveData
oggetto usando il modello singleton per avvolgere i servizi di sistema in modo che possano essere condivisi nella tua app. L' LiveData
oggetto si connette al servizio di sistema una volta, quindi qualsiasi osservatore che necessita della risorsa può semplicemente guardare l' LiveData
oggetto.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
Il observe()
metodo passa il frammento, che è un'istanza di LifecycleOwner
, come primo argomento. Ciò indica che questo osservatore è legato Lifecycle
all'oggetto associato al proprietario, nel senso che:
Se l'oggetto Ciclo di vita non è in uno stato attivo, l'osservatore non viene chiamato anche se il valore cambia.
Dopo la distruzione dell'oggetto Ciclo di vita, l'osservatore viene rimosso automaticamente
Il fatto che gli LiveData
oggetti siano consapevoli del ciclo di vita significa che è possibile condividerli tra più attività, frammenti e servizi.