【Android】EventBus源码解析(3.1.1)

本文深入解析了Android库EventBus的内部实现,涵盖EventBus的基本概念如TheadMode线程模式、Subscribe注解和SubscriberMethod,详细介绍了EventBus的注册过程、事件发送流程,包括getDefault单例获取、register方法的订阅注册和post方法的事件分发机制。
摘要由CSDN通过智能技术生成

零、Android消息机制

回顾一下Android消息机制,消息机制中有Handler、Message、MessageQueue、Looper。
下面的网址是之前总结的消息机制:
https://blog.csdn.net/J675620982/article/details/81412918

一、EventBus中的概念讲解

1、TheadMode线程模式

在订阅者中,每个方法都有一个线程模式,用于确认EventBus调用该方法时执行的线程。在EventBus 3.1.1版本中,共有5个线程模式

  1. POSTING
    该模式下,发布者在哪个线程发布消息,订阅者就在哪个线程调用该订阅方法,避免的线程的切换,符合哪些时间极短的任务。同时也要快速处理完,因为运行的可能是在主线程中。

  2. main
    在Android上,将在UI线程中调用订阅者,如果发布线程是主线程,则直接调用订阅者方法,阻止发布线程,否则事件排队等待传递。使用此模式要避免造成ANR

  3. MAIN_ORDERED
    在UI线程中调用订阅者,该事件将始终排队等待传递。保证调用是非阻塞的。

  4. BACKGROUND
    将在后台线程中调用订阅者。如果发布线程不是主线程,则将在发布线程中直接调用订阅者方法。如果发布线程是主线程,则EventBus使用单个后台线程,该线程将按顺序传递其所有事件。使用此模式的订阅者应尝试快速返回以避免阻止后台线程。

  5. ASYNC
    在Android上,将在后台线程中调用订阅者。如果发布线程不是主线程,则将在发布线程中直接调用订阅者方法。如果发布线程是主线程,则EventBus使用单个后台线程,该线程将按顺序传递其所有事件。使用此模式的订阅者应尝试快速返回以避免阻止后台线程。

2、Subscribe注解

@Documented         //注解
@Retention(RetentionPolicy.RUNTIME)     //作用时间:运行时
@Target({
   ElementType.METHOD})           //作用范围:method
public @interface Subscribe
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值