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

Я понимаю, как использовать намерения для связи с системой/другими приложениями. Я понимаю, как использовать намерения в одном приложении. Я также понимаю, как использовать Otto для общения в том же приложении.

Каковы плюсы и минусы использования Otto vs. Intents для связи между моими действиями/услугами?


person Martin S.    schedule 26.06.2013    source источник
comment
Этот вопрос не должен быть закрыт. Полученный ответ был очень информативным и точно ответил на мой вопрос. Ответ был основан на фактах за и против, поэтому этот вопрос не давал ответов, основанных в первую очередь на мнениях.   -  person Jade    schedule 13.08.2014


Ответы (1)


Плюсы использования Отто:

  • Вы можете создавать свои собственные типы событий вместо того, чтобы использовать настраиваемые действия или что-то еще, чтобы отличить одно Intent от другого.

  • Все находится внутри вашего собственного процесса (в отличие от startActivity() и родственных, которые всегда включают IPC, даже если действие, которое вы запускаете, находится в вашем собственном приложении), для скорости и безопасности.

  • Немного меньше кода, так как вам не нужно создавать объекты IntentFilter или BroadcastReceiver.

  • Он предлагает шаблон производителя (в качестве квази-замены для липких трансляций)

  • Поскольку он не является частью ОС, он может обновляться чаще.

Минусы использования Отто:

  • Он не может начать действие

  • Не удается запустить службу

  • Он не может привязаться к службе

  • Он не может отправить широковещательную рассылку

  • Его нельзя использовать в PendingIntent или для любого настоящего IPC.

IOW, истинное сравнение Отто с LocalBroadcastManager, а не с обычным использованием Intents.

person CommonsWare    schedule 26.06.2013
comment
Спасибо. Итак, по сравнению с LocalBroadCastManager у него все еще есть много плюсов, но нет минусов? - person Martin S.; 26.06.2013
comment
@MartinS.: По сравнению с LocalBroadcastManager все плюсы действительны, кроме второго (поскольку это верно и для LocalBroadcastManager). Вы правы, минусы все отпадают. - person CommonsWare; 26.06.2013
comment
@CommonsWare и последний тоже, потому что LocalBroadcastManager является частью библиотеки поддержки и включен только в ваш apk. - person Henry Pootle; 09.06.2015
comment
@CommonsWare знает свое дело! - person Subby; 22.06.2015
comment
Это лучше, чем ЛБМ? - person Bytecode; 16.05.2016
comment
@Bytecode: как Я заметил почти два года назад, сравнивая Отто с LocalBroadcastManager, у Отто есть все плюсы, перечисленные в ответе, кроме второго (что также верно для LocalBroadcastManager). Все недостатки исчезают, поскольку и Отто, и LocalBroadcastManager разделяют эти ограничения. - person CommonsWare; 16.05.2016
comment
@CommonsWare: Могу ли я перенести свой код LBM в EventBus? Что вы предлагаете - person Bytecode; 16.05.2016
comment
@Bytecode: Могу ли я перенести свой код LBM в EventBus? -- можно, но не знаю, стоит ли менять. Все преимущества, которые я привожу, относятся к преимуществам программирования, а не к преимуществам времени выполнения. - person CommonsWare; 16.05.2016