学习笔记-----EventBus

  1. 一款针对Android优化的发布/订阅事件总线。
    • 替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。
    • 基本使用
      • 自定义一个类,可以是空类,就像是接口: ``` public class DayEvent { private int code;

          public DayEvent(int code) {
           this.code = code;
           }
        
          public int getCode() {
          return code; 		} 		} 		```
        
      • 接收页面注册: //例如onCreate() eventBus.register(this);

      • 发送消息: //共有四个函数,各功能不同。 eventBus.post(new DayEvent(0));

      • 接受消息的页面实现: public void onEvent(DayEvent event) { //就像是实现接口 int code = event.getCode(); //分别实现 }

      • 解除注册: //在注册页面,对应的生命周期内。 //例如onDestroy() eventBus.unregister(this);

    • EventBus函数:
      • onEvent
        • 如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
      • onEventMainThread
        • 如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。
      • onEventBackgroundThread
        • 如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么onEventBackground函数直接在该子线程中执行。
      • onEventAsync
        • 使用这个函数作为订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync。
    • 消息的接收是根据参数中的类名来决定执行哪一个的。

资料参考:
EventBus使用详解(一)——初步使用EventBus
EventBus使用详解(二)——EventBus使用进阶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值