事件总线,事件驱动(RxJava,EventBus)与广播(BroadcastReceiver)(2)

 响应式编程RxJava,事件总线EventBus。
 -- EventBus与广播:
  广播相对于其他的方式而言,广播是重量级的,消耗资源较多的方式。他的优势体现在与sdk连接紧密,如果需要同 android 交互的时候,广播的便捷性会抵消掉它过多的资
源消耗,但是如果不同android交互,或者说,只做很少的交互,使用广播是一种浪费;

> 事件总线EventBus
  事件总线通过注解或者反射的方式自动维护和调用。 otto和AndroidEventBus采用的是注解,EventBus则是规定方法名基础上采用反射。
  从调度策略角度,EventBus定义了四种ThreadMode,通过订阅方法的名称来实现。otto的event bus模式事件调度的重要规则是事件调度仅在发送线程域中进行,通过线程控制
策略ThreadEnforcer类实现不同的线程控制。同样的,AndroidEventBus同样定义了三种ThreadMode,与 greenrobot的EventBus定义的区别也仅是,前者采用注解,后者采用方
法名标记。

  EventBus比较适合仅仅当做组件间的通讯工具使用,主要用来传递消息。
-- 3大的框架的基本使用都非常简单:
EventBus的基本使用官方参考:https://github.com/greenrobot/EventBus
Otto的基本使用官方参考:http://square.github.io/otto/
AndroidEventBus- https://github.com/hehonghui/AndroidEventBus

- EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。
 1.POSTING(默认):如果使用事件处理函数指定了线程模型为POSTING,那么该事件在哪个线程发布出来的,事件处理函数就会在这个线程中运行,也就是说发布事件和接收事件在同一个线程。在线程模型为POSTING的事件处理函数中尽量避免执行耗时操作,因为它会阻塞事件的传递,甚至有可能会引起应用程序无响应(ANR)。

 2.MAIN:事件的处理会在UI线程中执行。事件处理时间不能太长,长了会ANR的。
 
 3.BACKGROUND:如果事件是在UI线程中发布出来的,那么该事件处理函数就会在新的线程中运行,如果事件本来就是子线程中发布出来的,那么该事件处理函数直接在发布事件的线程中执行。在此事件处理函数中禁止进行UI更新操作。

  4.ASYNC:无论事件在哪个线程发布,该事件处理函数都会在新建的子线程中执行,同样,此事件处理函数中禁止进行UI更新操作。 

>  响应式编程RxJava使用RxJava替换Handler等。(RxJava Demo,RxBus Demo)
一起来造一个RxJava,揭秘RxJava的实现原理- http://blog.csdn.net/tellh/article/details/71534704
一个简单的demo彻底搞懂观察者模式- https://www.jianshu.com/p/bb9b46ac41e4
RxJava Demo- https://github.com/nanchen2251/RxJava2Examples
RxJava Demo- https://github.com/akarnokd/RxJava2Interop
RxBus Demo- https://github.com/luxiaoming/RxBusDemo
RxBus Demo- Rxbus-https://github.com/lightofrain/RxBusTest
RxBus Demo- https://github.com/luxiaoming/RxBus 

响应式编程RxJava- https://github.com/ReactiveX/RxJava
响应式编程RxAndroid- https://github.com/ReactiveX/RxAndroid
 RxJava的响应式编程,使用“可观察的序列”构成基于事件的,异步的程序库(观察者模式)

  RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在
Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)
  RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。
  与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted() 和 onError()。

-- Rxjava
 Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点。
RxJava2 使用解析,常见的使用场景- https://www.jianshu.com/p/7474950af2df
RxJava语法与使用场景集合- https://github.com/jiangzhengnan/RxJavaModel
Rxjava实际应用场景- https://www.jianshu.com/p/7b43a0883e62

你可能感兴趣的:(热点(hot)技术)