2015-01-28 11 views
8

Es gibt viele Beispiele in StackOverflow und anderswo, die die Klasse LocalBroadcastManager verwenden, um das Übertragen von Ereignissen außerhalb einer App zu vermeiden.Äquivalent von LocalBroadcastManager ohne Android-Unterstützungsbibliothek

Diese Klasse verwendet jedoch die Android-Unterstützungsbibliothek, wie im Paketnamen gezeigt: android.support.v4.content.LocalBroadcastManager.

Gibt es ein Äquivalent von LocalBroadcastManager im Standard-SDK, das die Android-Unterstützungsbibliothek nicht verwendet?

Es scheint nicht, dass die sendBroadcast Methode in android.content.Context diese Art von Sicherheitsgranularität hat.

Antwort

2

Nein, es existiert nicht, Wenn Sie diese Klasse neu erstellen möchten, können Sie den Quellcode lesen, um sich selbst zu implementieren, ohne die support lib zu verwenden. Wie auch immer, was ist das Problem mit der Unterstützung lib? es ist leicht.

Eine kleine Problemumgehung könnte die Verwendung des normalen BroadCastReceiver sein und setzen <android:exported="false"> auf Ihrem Manifest, innerhalb dieses Empfängers, dies zu vermeiden andere Anwendungen senden Sie Intents, so dass Sie einen lokalen Empfänger vortäuschen.

Hinweis: Ich sagte, fälschen, weil die LocalBroadcastManager Optimierungen hat, indem sie nicht die Absicht, das System zu verbreiten ...

Hoffnung, das hilft.

+1

Eigentlich kam ich zu dem gleichen Ergebnis, nachdem ich den Quellcode von LocalBroadcastManager gelesen hatte und nachdem ich die Gründe für die Android-Support-Bibliotheken besser verstanden hatte. Jedenfalls würde ich heute etwas wie EventBus verwenden. –