2015-01-28 3 views
8

В StackOverflow и в других местах, где используется класс , есть много примеров, чтобы избежать трансляции событий за пределами приложения.Эквивалент LocalBroadcastManager без библиотеки поддержки Android

Однако этот класс использует библиотеку поддержки Android, как показано в названии пакета: android.support.v4.content.LocalBroadcastManager.

Есть ли эквивалент LocalBroadcastManager в стандартном SDK, который не использует библиотеку поддержки Android?

Не похоже, что метод sendBroadcast в android.content.Context имеет такую ​​степень детализации безопасности.

ответ

2

Нет, его не существует. Если вы хотите воссоздать этот класс, вы можете прочитать исходный код, чтобы реализовать себя, не используя поддержку lib. В любом случае, в чем проблема с использованием lib? он легкий.

Немного обходного пути может использовать обычный BroadCastReceiver и положить <android:exported="false"> на ваш манифест, внутри этого ресивера это позволит другим приложениям отправлять вам намерения, поэтому вы притворяетесь локальным приемником.

Примечания: Я сказал, притворяюсь, потому что LocalBroadcastManager оптимизированный пути не распространяется намерение системы ...

Надеются, что это помогает.

+1

На самом деле я пришел к тому же выводу, прочитав исходный код LocalBroadcastManager и после того, как вы поняли rationnal за библиотеками поддержки Android. Во всяком случае сегодня я бы использовал что-то вроде EventBus. –

Смежные вопросы