您的位置:首页 > 移动开发 > Android开发

android EvenBus

2016-03-10 22:23 387 查看
组件间通信框架 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 参数;

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: