android EvenBus

组件间通信框架 EvenBus


在项目中首先添加EvenBus的jar包


整体过程大致可以分为3类:

1.在onCreat中使用EvenBus.getInstatnce().register(this);

2.使用EventBus.getDefault().post(object)进行事件的分发。

onEvenMainThread, (方法在UI线程执行)

onEvenPostThread,(方法在当前发布事件的线程执行)

onEventBackgroundThread,(如果在非UI线程发布的事件,则直接执行,和发布在同一个线程中。如果在UI线程发布的事件,则加入后台任务队列,使用线程池一个接一个调用)

onEventAsyns(加入后台任务队列,使用线程池调用,注意没有BackgroundThread中的一个接一个)

接收post传递的参数并进行操作。

3.在onDestroy中使用EventBus.getDefault().unregister(this);



一.第一步中,对事件进行订阅,调用EvenBus.getInstatnce().register(this)后,会遍历该类下所有以onEvent开头的方法,存在一个Map中。


二.第二步,通过post中传递的参数类型,进行判断执行哪一个onEven方法。其实在第一步的Map中的key就是post的class类型。


三。第三步,注销事件订阅。


关于EventBus的使用,如果需要使用很多观察者模式。 比如,你正在开发一个东西,需要监听网络状态变化,App的安装情况,内容的下载情况。当存在很多观察者模式,「如何将这些事件通知到监听者」是可以复用的模块,这就是EventBus存在的意义。这里需要大家想明白一个问题,观察者模式本身就是一个可以复用的模块。


如果项目里面有大量的事件交互,那么还是可以通过EventBus来实现,否则还是推荐自己在模块内部实现观察者模式


如果多个方法参数都一样,post一个此参数,会多个方法调用;

使用EventBus的时候,创建一个事件类,把你的每一个参数(或者可能发生冲突的参数),封装成一个类。

public class Event{

     public static 参数;

............

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章