2014-10-28 5 views
5

Я начинаю использовать EventBus в своем приложении, и это очень приятно использовать, он решает множество проблем и упрощает код, а распространение по всему приложению со всеми потоками и все просто фантастично , но я чувствую, что я, возможно, злоупотребляю использованием событий.Использование, память и архитектура EventBus

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

Итак, вопрос для тех, у кого есть опыт работы с этой библиотекой, если есть некоторые проблемы с наличием большого количества событий в моем приложении, если есть некоторые известные проблемы памяти, связанные с использованием этих событий. Я пытаюсь использовать его с умом, но сложно не включать его в вашу архитектуру, потому что это действительно хорошая функциональность. В любом случае, если у вас есть что сказать о предмете, будет хорошо, потому что у меня много кодирования, и проблема будет иметь неправильную архитектуру и вернуться к изменениям, потому что некоторые проблемы, связанные с событиями.

PD. Я говорю о родном приложении для Android, с большим количеством сетей

Thx

+2

Мое мнение, я лично считаю, что я злоупотребляю событиями намного проще, чем шаблон 'listener-observer' (или на iOS, шаблон делегата), хотя они очень похожи. Ничего изначально не ошибочно архитектурно с событиями, но вы должны быть осторожны с ними. Если вы чувствуете это в начале, тогда есть причина для этого. Я бы попытался придерживаться «слушателя-наблюдателя», если единственным способом добиться чего-то не является использование событий. Просто повторю, это только мое мнение. – Adam

+0

Да, я беспокоюсь, что это может стать сложным и сложным для поддержания и масштабирования, пока я использую библиотеку волейбола для своей сети, и я обрабатываю все свои обратные вызовы с помощью событий, и я использую события также для критических ошибок/проблемы в моем приложении, которые должны остановить выполнение и должны распространяться по всему приложению, например, спросить подключение к Интернету перед вызовом веб-службы и если не показывать экран диалога в текущей видимой активности/фрагменте или тосте, но я нахожу себя склонным использовать его все больше и вот почему я спрашиваю – labreu

ответ

4

Это не проблема с множеством событий в вашем приложении, если вы следите за изменениями жизненного цикла компонентов: зарегистрируйтесь для событий в onStart() и отмените регистрацию в onStop(). Если вы это сделаете, то для событий будет подписано только относительно небольшое подмножество активных компонентов, что затруднит решение целого.

В моем приложении у меня возникла проблема с центральным экземпляром события Singleton event, поэтому я использую lightweight and fast event bus, способный присоединяться к активности и уважать ее жизненный цикл. С его помощью у меня может быть экземпляр шины на активность, что очень легко.

+0

Да, я очень хорошо разбираюсь в событиях регистрации/отмены регистрации в моем проекте, в библиотеке EventBus я хорошо разбираюсь в этой части, смотрю вашу библиотеку и примеры, она выглядит красиво. В библиотеке EventBus от greenrobot обработчик событий singleton предоставляется библиотекой уже, поэтому вам просто нужно зарегистрироваться и все. Спасибо за ответ – labreu

2

Я понимаю, что вы говорите, и я также работаю на довольно массивном кодовом в нашей компании, и мы используем событие автобус много. Вы просто должны быть осторожны с ним, но может раздражать, чтобы узнать, какие места в приложении подписаны на определенное событие. Если есть несколько подписей, то вам придется ловить рыбу через приложение, это не очень весело. В качестве решения этого я очень люблю использовать этот замечательный плагин для Android Studio для Otto Event Bus, который будет беспрепятственно доставать вас и события своим подписчикам или наоборот.

https://github.com/square/otto-intellij-plugin

Это действительно поможет сделать навигацию между событиями и абонентами намного проще.

+0

Да, это похоже на хороший инструмент, но я не использую Отто, а библиотеку EventBus greenrobot: https://github.com/greenrobot/EventBus.Я имею дело с количеством звонков и обратных вызовов, которые стараются быть такими же организованными, как я могу, в большом проекте, так как теперь он выглядит хорошо, давайте посмотрим, как вовремя выглядит обслуживание и масштабируемость. Thx для ответа, не принимайте его как правильно, потому что он используется только для Отто, но является хорошим инструментом для других, поэтому вы получили мой голос. – labreu