文章目录
零、Android消息机制
回顾一下Android消息机制,消息机制中有Handler、Message、MessageQueue、Looper。
下面的网址是之前总结的消息机制:
https://blog.csdn.net/J675620982/article/details/81412918
一、EventBus中的概念讲解
1、TheadMode线程模式
在订阅者中,每个方法都有一个线程模式,用于确认EventBus调用该方法时执行的线程。在EventBus 3.1.1版本中,共有5个线程模式
-
POSTING
该模式下,发布者在哪个线程发布消息,订阅者就在哪个线程调用该订阅方法,避免的线程的切换,符合哪些时间极短的任务。同时也要快速处理完,因为运行的可能是在主线程中。 -
main
在Android上,将在UI线程中调用订阅者,如果发布线程是主线程,则直接调用订阅者方法,阻止发布线程,否则事件排队等待传递。使用此模式要避免造成ANR -
MAIN_ORDERED
在UI线程中调用订阅者,该事件将始终排队等待传递。保证调用是非阻塞的。 -
BACKGROUND
将在后台线程中调用订阅者。如果发布线程不是主线程,则将在发布线程中直接调用订阅者方法。如果发布线程是主线程,则EventBus使用单个后台线程,该线程将按顺序传递其所有事件。使用此模式的订阅者应尝试快速返回以避免阻止后台线程。 -
ASYNC
在Android上,将在后台线程中调用订阅者。如果发布线程不是主线程,则将在发布线程中直接调用订阅者方法。如果发布线程是主线程,则EventBus使用单个后台线程,该线程将按顺序传递其所有事件。使用此模式的订阅者应尝试快速返回以避免阻止后台线程。
2、Subscribe注解
@Documented //注解
@Retention(RetentionPolicy.RUNTIME) //作用时间:运行时
@Target({
ElementType.METHOD}) //作用范围:method
public @interface Subscribe