Отто против LocalBroadcast:

Я большой поклонник открытого вклада, сделанного квадратами для сообщества Android и изучающего их последний вклад Otto (Event Bus)

http://square.github.io/otto/

Копаясь глубже, я вижу, что Отто использует отражение, и нет упорядоченной трансляции (схема, в которой неиспользованное сообщение передается от одного получателя к следующему получателю, прослушивающему событие того же типа), Отто верит в большее количество модели пожара и забывания.

Теперь 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)

Но, конечно, используя Отто можно писать меньше кода, есть компромисс.

  1. Отто делает код чище, меньше
  2. Отто облегчает тестирование
Другие вопросы по тегам