2015-01-28 18 views
8

Esistono molti esempi su StackOverflow e altrove che utilizzano la classe LocalBroadcastManager per evitare eventi di trasmissione all'esterno di un'app.Equivalente di LocalBroadcastManager senza libreria di supporto Android

Tuttavia, questa classe utilizza la libreria di supporto Android come mostrato nel nome del pacchetto: android.support.v4.content.LocalBroadcastManager.

Esiste un equivalente di LocalBroadcastManager nell'SDK standard che non utilizza la libreria di supporto Android?

Non sembra che il metodo sendBroadcast in android.content.Context abbia questo tipo di granularità di sicurezza.

risposta

2

No, non esiste, Se si desidera ricreare questa classe è possibile leggere il codice sorgente per implementare se stessi senza utilizzare la lib di supporto. Ad ogni modo, qual è il problema usando il supporto lib? è leggero

Una soluzione alternativa potrebbe essere utilizzare il normale BroadCastReceiver e inserire <android:exported="false"> sul manifest, all'interno di questo ricevitore, questo evita ad altre app di inviarti intenti, quindi stai simulando un ricevitore locale.

Nota: ho detto fingendo, perché il LocalBroadcastManager ha ottimizzazioni, non si diffuse l'intento di sistema ...

Spero che questo aiuti.

+1

In realtà sono giunto alla stessa conclusione dopo aver letto il codice sorgente di LocalBroadcastManager e dopo aver compreso meglio il razionale dietro le librerie di supporto Android. Ad ogni modo oggi userei qualcosa come EventBus. –