EventBus篇一:ThreadMode

TheadMode

  每一个事件处理方法都有着自己的线程模式(TheadMode)。线程模式决定了EventBus在哪个线程中调用事件处理方法。
  ThreadMode枚举包含四个值:
   - PostThread
   - MainThread
   - BackgroundThread
   - Async

A.PostThread(默认模式)

调用线程:事件发布线程
  当订阅者所关注的变化发生时,EventBus将会在事件所发布的线程中调用订阅者对应的方法。
  因为订阅者在发布事件的线程中被调用,所以这种线程模式可以完全避免线程切换所带来的开销。适用于短时间能够完成并且不限定在主线程的事件处理情景。任何事件处理情景使用这种模式必须保证能够快速地返回结果,否者可能将引起线程阻塞。当发布事件的线程是主线程时,还可能会出现ANR。

B.MainThread

调用线程:Android主线程(UI线程)
  无论发布事件的是哪个线程,订阅者都将在Android主线程(也即UI线程)中被调用。
  任何事件处理场景使用这种模式必须保证快速地返回结果,从而避免阻塞主线程。

C.BackgroundThread

调用线程:事件发布线程或者后台线程
  当发布事件的线程不是主线程时,事件处理方法将会立即在该线程中被调用;如果发布时间的线程是主线程,EventBus会使用一个单例的后台线程调用事件处理函数,该后台线程将会按照时间顺序处理并交付所有的事件。
  任何事件处理场景使用这种模式必须保证快速地返回结果,从而避免阻塞线程。

D.Async

调用线程:异步线程
事件处理方法将会在异步的线程中被调用。该异步线程既不是主线程,也不是事件发布线程。
在该模式下,发布事件不必等待事件处理方法执行完毕。在事件处理方法执行诸如网络请求等需要花费一定时间的任务时,推荐使用该模式。在使用过程中为了限制并发线程的数量,尽量避免在同一时间段内触发过多需要长时间执行的异步处理方法。

EventBus使用线程池来有效地重用异步线程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值