EventBus实现原理(手写核心逻辑)

解释一下反射:

JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

EventBus核心流程图总结:

发布者post发送一个事件,处理器根据发布的数据类型,然后分配给订阅者方法回调里面。

  • 先注册
  • 通过反射拿到所有的这个类的方法
  • 判断这个类有没有注解,然后存起来。
  • 然后获取到注解的值来判断需不需要转换线程
  • 在post方法里面通过反射,调用这个类方法。
第一步: 声明Subscribe注解
/**
* @Retention 用于声明该注解生效的生命周期,有三个枚举值可以选择<br>
 * 1. RetentionPolicy.SOURCE 注释只保留在源码上面,编译成class的时候自动被编译器抹除
 * 2. RetentionPolicy.CLASS 注释只保留到字节码上面,VM加载字节码时自动抹除
 * 3. RetentionPolicy.RUNTIME 注释永久保留,可以被VM加载时加载到内存中
 * 注意:由于我们的目的是想在VM运行时对Filed上的该注解进行反射操作,因此Retention值必须设置为RUNTIME
 *
 * @Target 用于指定该注解可以声明在哪些成员上面,常见的值有FIELD和Method,
      由于我们的当前注解类是想声明在Filed上面
 * 因此这里设置为ElementType.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值