Подтвердить что ты не робот

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

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

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

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

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

Оба Otto и LBM находятся в одном и том же пространстве процессов, поэтому с точки зрения скорости я предполагаю, что оба будут одинаковыми. Единственное реальное различие, которое я мог видеть, - это то, что Отто позволяет вам определять пользовательские события, и вам не нужно сериализовать/Парцеллу Объекты.

Следовательно, мой реальный вопрос: когда вы используете Отто, если LBM делает то же самое.

Ссылки:

http://nick.perfectedz.com/otto-event-system/

Использование намерений или шины событий для связи в одном приложении

https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY

4b9b3361

Ответ 1

Но на более яркой стороне он поддерживает упорядоченное вещание

Не совсем. В LocalBroadcastManager нет sendOrderedBroadcast(), а приоритет на IntentFilter не используется. Если вы имеете в виду, что "трансляции будут доставлены в том порядке, в котором я зарегистрировал приемников", это может быть текущее поведение, но нет гарантии, что он останется таким.

Оба Otto и LBM находятся в одном пространстве процессов, поэтому с точки зрения скорости я предполагаю, что оба будут одинаковыми

Они были бы похожи, хотя, вероятно, не идентичны.

Поэтому мой реальный вопрос: когда вы используете Отто, если LBM делает то же самое

Сравнивая эти два, Otto имеет более чистый API, IMHO.

Лично я использовал greenrobot EventBus по любому из них, потому что он предлагает более гибкие модели потоков.

Ответ 2

Оба Otto и LBM находятся в одном и том же пространстве процессов, поэтому с точки зрения скорости я предполагаю, что оба будут одинаковыми.

Я обнаружил, что регистрация событий Otto довольно дорога, иногда для регистрации подписчиков событий требуется более 16 миллисекунд (это означает, что вы отбрасываете 1 FPS!). Это несколько ожидалось, поскольку событие, подписанное в Отто, осуществляется путем размышления. Хотя для LBM требуется всего несколько сотен мкс только для регистрации, что почти на 32 раза быстрее. (Результат от traceview, Samsung Galaxy S4)

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

Ответ 3

  • otto делает код чище, меньше
  • otto упрощает тестирование.