EventBus的使用

EventBus的使用

  今天讲讲EventBus,这是个好东西,它没有华丽的效果,却简单使用,尤其是减少了组件之间通讯的麻烦,缺点就是你没法很好控制它的通信速度,适合异步通知,如果你想要在异步更新动画之类的,还是别用它了。
  其他人已经把原理和一些细节说的很好了,我就简单讲讲用法吧。EventBus其实就是帮你实现了观察者模式,而且使用起来还是很舒服的,先上代码:

 @Override
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(this);
}
  第一步,生命周期开始的时候注册

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
  第二步,生命周期结束的时候注销

public void onEventMainThread(CustomerEvent event) {

}
  第三步,定义事件的活动内容
  最简单,也是最常用的EventBus流程就走完了。这里的CustomerEvent需要你自定义一个:

public class CustomerEvent {     

}

  可以什么都不写,只是当一个通讯的载体,如果你需要传输数据,在里面定义数据类型即可。使用的时候直接从onEventMainThread里面取即可。

  EventBus.getDefault().post(  
                        new CustomerEvent ());  
  需要分发事件的时候,直接post即可,注意对应事件Event的名字和参数即可。
  简单说一下要注意的地方,前面的三步必须都完成才能算是一个完整的流程,哪怕你的onEventMainThread什么也不做,那也必须写上,不然编译器会报错,不过错误提示很明显,查错一目了然,基本上都是忘记写onEventMainThread。分发一个事件的时候,注册过的组件都会在onEventMainThread里面找对应的事件,如果对应的事件相同,都会执行相应的代码。一个组件里面也可以有多个onEventMainThread,监听多组事件。事件分发不一定会及时,所以不要把变化频发的事件用EventBus更新,比如主页的数据变化,还是老老实实用handler吧,EventBus还有其他东西可以说一说,比如onEventMainThread是UI线程监听,onEventBackground子线程监听,onEventAsync会新建子线程监听,其他人已经说得很细了,这里就不再赘述,EventBus使用起来不复杂,也很实用,一篇文章的容量讲解使用足够了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值