EventBus之ThreadMode

什么是ThreadMode?

ThreadMode翻译为中文即为“线程模式”。
每个事件处理程序方法都有一个线程模式,它确定EventBus调用该方法所在的线程。 EventBus专注于发布事务线程的独立性。

线程模式分类

POSTING

消息订阅者将与发送者所处在同一线程中。这是默认值。该模式避免了线程切换所带来的开销。这是处理简单事务所推荐的模式。如果发布线程是主线程,使用该模式必须立即返回,以避免阻塞主线程。

MAIN

消息订阅者将在Android主线程(即UI线程)中被调用。 如果发布线程是主线程,事件处理方法将直接调用。 使用此模式的事件处理必须快速返回以避免阻塞主线程。

BACKGROUND

消息订阅者将在后台线程中被调用。如果发布线程不是在主线程。事件处理方法将被直接调用而不需要切换线程。如果发布线程是在主线程,EventBus使用了单一的后台线程有序地传递所有事件。 使用此模式的事件处理必须快速返回而避免阻塞后台线程。

ASYNC

事件处理方法将在单独的一个线程中调用。这个线程往往独立于发布线程和主线程(即UI线程)。发布事件不需要等待事件处理方法。

如果事件处理方法比较耗时,则需要使用该模式。例如:用于网络访问。 避免触发大量数据长时间运行的异步处理程序方法同时限制并发线程的数量。
EventBus使用线程池来高效地复用线程,完成异步事件处理通知。

MAIN_ORDERED(该模式在3.1.1版本之后才支持)
订阅者方法将在主线程(UI线程)中被调用。因此,可以在该模式的订阅者方法中直接更新UI界面。事件将先进入队列然后才发送给订阅者,所以发布事件的调用将立即返回。这使得事件的处理保持严格的串行顺序。使用该模式的订阅者方法必须快速返回,以避免阻塞主线程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值