什么是ThreadMode?
ThreadMode翻译为中文即为“线程模式”。
每个事件处理程序方法都有一个线程模式,它确定EventBus调用该方法所在的线程。 EventBus专注于发布事务线程的独立性。
线程模式分类
POSTING
消息订阅者将与发送者所处在同一线程中。这是默认值。该模式避免了线程切换所带来的开销。这是处理简单事务所推荐的模式。如果发布线程是主线程,使用该模式必须立即返回,以避免阻塞主线程。
MAIN
消息订阅者将在Android主线程(即UI线程)中被调用。 如果发布线程是主线程,事件处理方法将直接调用。 使用此模式的事件处理必须快速返回以避免阻塞主线程。
BACKGROUND
消息订阅者将在后台线程中被调用。如果发布线程不是在主线程。事件处理方法将被直接调用而不需要切换线程。如果发布线程是在主线程,EventBus使用了单一的后台线程有序地传递所有事件。 使用此模式的事件处理必须快速返回而避免阻塞后台线程。
ASYNC
事件处理方法将在单独的一个线程中调用。这个线程往往独立于发布线程和主线程(即UI线程)。发布事件不需要等待事件处理方法。
如果事件处理方法比较耗时,则需要使用该模式。例如:用于网络访问。 避免触发大量数据长时间运行的异步处理程序方法同时限制并发线程的数量。
EventBus使用线程池来高效地复用线程,完成异步事件处理通知。
MAIN_ORDERED(该模式在3.1.1版本之后才支持)
订阅者方法将在主线程(UI线程)中被调用。因此,可以在该模式的订阅者方法中直接更新UI界面。事件将先进入队列然后才发送给订阅者,所以发布事件的调用将立即返回。这使得事件的处理保持严格的串行顺序。使用该模式的订阅者方法必须快速返回,以避免阻塞主线程。