EventBus篇一:ThreadMode
来源:互联网 发布:单片机控制继电器 编辑:程序博客网 时间:2024/06/05 00:30
TheadMode
每一个事件处理方法都有着自己的线程模式(TheadMode)。线程模式决定了EventBus在哪个线程中调用事件处理方法。
ThreadMode枚举包含四个值:
- PostThread
- MainThread
- BackgroundThread
- Async
A.PostThread(默认模式)
调用线程:事件发布线程
当订阅者所关注的变化发生时,EventBus将会在事件所发布的线程中调用订阅者对应的方法。
因为订阅者在发布事件的线程中被调用,所以这种线程模式可以完全避免线程切换所带来的开销。适用于短时间能够完成并且不限定在主线程的事件处理情景。任何事件处理情景使用这种模式必须保证能够快速地返回结果,否者可能将引起线程阻塞。当发布事件的线程是主线程时,还可能会出现ANR。
B.MainThread
调用线程:Android主线程(UI线程)
无论发布事件的是哪个线程,订阅者都将在Android主线程(也即UI线程)中被调用。
任何事件处理场景使用这种模式必须保证快速地返回结果,从而避免阻塞主线程。
C.BackgroundThread
调用线程:事件发布线程或者后台线程
当发布事件的线程不是主线程时,事件处理方法将会立即在该线程中被调用;如果发布时间的线程是主线程,EventBus会使用一个单例的后台线程调用事件处理函数,该后台线程将会按照时间顺序处理并交付所有的事件。
任何事件处理场景使用这种模式必须保证快速地返回结果,从而避免阻塞线程。
D.Async
调用线程:异步线程
事件处理方法将会在异步的线程中被调用。该异步线程既不是主线程,也不是事件发布线程。
在该模式下,发布事件不必等待事件处理方法执行完毕。在事件处理方法执行诸如网络请求等需要花费一定时间的任务时,推荐使用该模式。在使用过程中为了限制并发线程的数量,尽量避免在同一时间段内触发过多需要长时间执行的异步处理方法。
EventBus使用线程池来有效地重用异步线程。
- EventBus篇一:ThreadMode
- EventBus源码阅读(1)-ThreadMode
- 深入理解EventBus - ThreadMode、Sticky Event等
- EventBus 3.0进阶-Delivery Threads (ThreadMode)传送线程(线程模式)
- EventBus(一)
- EventBus使用(一)
- EventBus使用(一)
- EventBus 源码解析(一)
- EventBus实例教程(一)
- EventBus(一)
- EventBus使用详解(一)
- EventBus笔记(一)
- EventBus 3.0 (一) 基础
- EventBus使用(一)
- EventBus源码解析一
- EventBus的使用(一)
- 初步使用EventBus (一)
- Eventbus的使用(一)
- Java-LinkedList
- 对高效管理时间的个人观点分享
- Android--小米奇葩bug
- 帧动画关键帧处加入触发函数
- OpenMesh学习记录 1
- EventBus篇一:ThreadMode
- FLEX通过ANE调用安卓 ExtensionContext.createExtensionContext 返回null
- SSL
- Java-Vector
- 三国演义说明:再牛逼都是扯淡 ,活的岁数最大才是最重要
- listview的简单使用(Baseadapter)
- 已经搬家到新博客 jjyy.guru
- storm是如何保证at least once语义的
- JDK安装与环境变量配置