- 博客(4)
- 资源 (6)
- 收藏
- 关注
原创 EventBus源码分析(四):线程模型分析(2.4版本)
EventBus有四种线程模型 PostThread模式不需线程切换,直接在发布者线程进行事件处理。 MainThread模式分类讨论:发布者线程是主线程则直接调用事件处理方法,否则通过Handler进行线程切换,切换到主线程处理事件,该模式下事件是串行执行的。 BackgroundThread模式分类讨论:发布者线程不是主线程则在发布者线程直接处理事件,否则线程切换至线程池处理,所有该线程模式下的
2016-07-05 19:59:36 2262
原创 EventBus源码分析(三):post方法发布事件【获取事件的所有订阅者,反射调用订阅者事件处理方法】(2.4版本)
EventBus维护了一个重要的HashMap,这个HashMap的键是事件,值是该事件的订阅者列表,因此post事件的时候就能够从此HashMap中取出事件的订阅者列表,对每个订阅者反射调用事件处理方法。 private final Map<Class<?>, CopyOnWriteArrayList<Subscription>> subscriptionsByEventType;post方
2016-07-04 15:20:03 2822
原创 EventBus源码分析(二):register方法保存事件的订阅者列表(2.4版本)
EventBus维护了两个重要的map: 事件到订阅者列表的map,发布事件的时候可以根据事件获取订阅者列表,这样可以逐一反射调用订阅者的事件处理方法。 订阅者到事件列表的map,这样订阅者向EventBus解除注册(unregister)的时候可以根据订阅者获取该订阅者订阅的所有事件,对每个事件分别解除注册。 因此register注册订阅者的时候,EventBus会通过反射寻找订阅者订阅的所有事件
2016-07-04 11:11:08 1283
原创 EventBus源码分析(一):入口函数提纲挈领(2.4版本)
本文是EventBus源码分析的第一篇文章,不拘泥于具体的实现细节,从宏观上把握EventBus的设计思路,而EventBus总体的设计思路为: EventBus实例保存了事件到订阅者列表的map,发布事件的时候,从该map中取出该事件的所有订阅者,在规定的线程中反射调用所有订阅者的事件处理方法。DCL单例创建EventBus对象EventBus提供了静态方法创建EventBus对象,实现方式为标
2016-07-01 15:58:42 1227
如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5
2016-11-23
安卓二维码生成与扫描完美解决方案
2016-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人