android 事件总线理解

1,844 阅读1分钟

应用场景

你是否在开发的过程中遇到过想在ActivityB中回调ActivityA中的某个函数,但Activity又不能手动创建对象来设置一个Listener什么的? 你是否想在某个Service中想更新Activity或者Fragment中的界面?

在实际项目开发中,经常会遇到当执行某个业务逻辑时,希望调用其他处理逻辑。 通常最简单粗暴的方法是直接依赖其他模块,调用模块相应方法,但这样会带来一些问题:

  • 模块间相互依赖,耦合度高;
  • 后期维护困难;
  • 代码缺少设计,不利于拓展。

Android中Activity、Service、Fragment之间的相互通信比较麻烦,主要有以下几种方式:

  • 使用广播,发送者发出广播,接收者接收广播后处理;
  • 使用Handler和Message,如下载线程完成下载任务后,给UI发送Message,UI收到Message后更新界面。

以上两种比较繁琐,所以后来人就研究出了一种比较简单有效的方法 事件总线 (定义:针对事件提供统一订阅,发布以达到组件间通信的解决方案。原理:观察者模式。发送者把消息发送到事件总线,然后事件总线在接收者中查到有哪些方法注册了这个事件,如果某个方法注册了这个事件,就触发该方法。)事件总线框架提供了一种更灵活更强大而又更完美解耦的解决方案,在很多场合,从开发效率,执行性能和设计思路上都要优于BroadcastReceiver。

转载:blog.csdn.net/siwenyy/art…