Отто против LocalBroadcast:
Я большой поклонник открытого вклада, сделанного квадратами для сообщества Android и изучающего их последний вклад Otto (Event Bus)
Копаясь глубже, я вижу, что Отто использует отражение, и нет упорядоченной трансляции (схема, в которой неиспользованное сообщение передается от одного получателя к следующему получателю, прослушивающему событие того же типа), Отто верит в большее количество модели пожара и забывания.
Теперь Android имеет LocalBroadcastManager
(LBM) в его библиотеке поддержки v4, которая служит той же цели, хотя она более громоздкая и имеет больше ограничений на передаваемые объекты. Но с другой стороны, он поддерживает упорядоченную трансляцию и более похож на обычную трансляцию.
И Otto, и LBM находятся в одном и том же технологическом пространстве, поэтому, с точки зрения скорости, я думаю, что оба будут одинаковыми. Единственное реальное отличие, которое я видел, состоит в том, что Otto позволяет вам определять пользовательские события, и вам не нужно сериализовывать / разбирать объекты.
Поэтому мой настоящий вопрос: когда бы вы использовали Otto, если LBM делает то же самое?
Рекомендации:
http://nick.perfectedz.com/otto-event-system/
Использование Intents или шины событий для общения в одном приложении
https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY
3 ответа
Но с другой стороны, он поддерживает заказную трансляцию.
На самом деле, нет. Здесь нет sendOrderedBroadcast()
на LocalBroadcastManager
и приоритет на IntentFilter
не используется. Если вы имеете в виду "трансляции будут доставлены в том порядке, в котором я зарегистрировал получателей", это может быть текущим поведением, но нет никакой гарантии, что оно останется таким.
И Otto, и LBM находятся в одном и том же технологическом пространстве, поэтому по скорости я думаю, что оба будут одинаковыми
Они были бы похожи, хотя, вероятно, не идентичны.
Поэтому мой настоящий вопрос: когда бы вы использовали Otto, если LBM делает то же самое?
Сравнивая эти два, Отто имеет более чистый API, ИМХО.
Лично я бы использовал EventBus greenrobot поверх любого из них, потому что он предлагает более гибкие модели потоков.
И Otto, и LBM находятся в одном и том же технологическом пространстве, поэтому по скорости я думаю, что оба будут одинаковыми.
Я обнаружил, что регистрация событий Отто довольно дорогая, иногда регистрация подписчиков событий занимает более 16 миллисекунд (это означает, что вы теряете 1 FPS!). Это несколько ожидаемо, так как подписка на событие в Отто осуществляется с помощью рефлексии. В то время как для LBM регистрация занимает всего несколько сотен мкс, что почти в 32 раза быстрее. (Результат из трассировки, Samsung Galaxy S4)
Но, конечно, используя Отто можно писать меньше кода, есть компромисс.