2012-12-19 6 views
8

Il pacchetto di compatibilità di Android supporta LocalBroadcastManager, che consente l'invio di trasmissioni all'interno del mio processo. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.htmlLocalBroadcastManager vs utilizzando le callback

Fino ad ora stavo usando i callback (Interfacce simili a OnClickListener) per trasferire dati (asincroni e sincroni) tra diverse parti delle mie app.

Mi chiedevo se uno è migliore dell'altro. Qualche opinione?

risposta

6

LocalBroadcastManager consente di utilizzare Intent e IntentFilter così è più facile migrare da trasmissioni a livello di sistema a quelle locali. Ha anche qualche codice di accodamento e potrebbe essere più affidabile del tuo codice (o meno, a seconda di quanto sia sofisticata la tua implementazione). Oltre a questo, in pratica mantiene semplicemente elenchi di ricevitori in memoria e li itera per trovare una corrispondenza.

Un'altra alternativa consiste nell'utilizzare un bus eventi come Square Otto (basato su Guava), che aggiunge sicurezza di tipo ed è altrettanto efficiente.

1

Finora ho conosciuto, LocalBroadcastManager funziona come un fascino. È senza problemi e puoi passare qualsiasi argomento all'interno di Intent e recuperarlo durante l'ascolto. L'unica affidabilità è che il gestore di broadcast mette l'intento in coda.

Quando si deve utilizzare LocalBroadCastManager? Quando si hanno attività singole (FragmentActivity) e tonnellate di classi Fragment, è più semplice avere un LocalBroadcastManager all'interno della singola attività.

Se si dispone di molte attività, l'utilizzo di questo potrebbe essere utile, ma tenere presente che si stanno già utilizzando intenti per avviare nuove attività, quindi se ci sono intenzioni in sospeso, questa trasmissione sarà in coda e dovrai aspettare

Quindi, l'utilizzo migliore è Attività singola con numerosi frammenti.

+0

Ho ritirato la modifica perché avrebbe dovuto essere un commento, e la tua modifica implicava che ero d'accordo con la tua risposta. Attività e frammenti sono a conoscenza delle istanze di ciascuno. Callbacks (anche solo un'interfaccia generale per tutti i Fragments) è più semplice da configurare (rispetto alla creazione, filtri, registrazione, annullamento della registrazione, ecc.) E puoi passare qualsiasi tipo di oggetto tra di loro. Le trasmissioni locali sono più adatte per i momenti in cui non si ha accesso all'istanza di un altro oggetto (ad esempio, Servizi). –