eventbus 源码分析
2016-10-17 13:07:01 0 举报
AI智能生成
EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者,简化了应用内部的组件通信。源码分析显示,EventBus 主要包含四个部分:粘性事件、线程池、优先级队列和反射。粘性事件用于在事件处理过程中保持上下文信息;线程池用于并发处理事件;优先级队列用于对事件进行排序;反射则用于实现动态注册和解注册。EventBus 的实现原理是基于观察者模式,通过发布事件和订阅事件来实现组件之间的通信。
作者其他创作
大纲/内容
eventbus 源码分析
findUsingInfo
FindState findState = prepareFindState();
synchronized (FIND_STATE_POOL) { for (int i = 0; i POOL_SIZE; i++) { FindState state = FIND_STATE_POOL[i]; if (state != null) { FIND_STATE_POOL[i] = null; return state; } } }
在FIND_STATE_POOL中取出FindState;
return new FindState();
若FIND_STATE_POOL所有元素都空,则返回new FindState()
findState.initForSubscriber(subscriberClass);
this.subscriberClass = clazz = subscriberClass; skipSuperClasses = false; subscriberInfo = null;
private SubscriberInfo getSubscriberInfo(FindState findState) { if (findState.subscriberInfo != null && findState.subscriberInfo.getSuperSubscriberInfo() != null) { SubscriberInfo superclassInfo = findState.subscriberInfo.getSuperSubscriberInfo(); if (findState.clazz == superclassInfo.getSubscriberClass()) { return superclassInfo; } } if (subscriberInfoIndexes != null) { for (SubscriberInfoIndex index : subscriberInfoIndexes) { SubscriberInfo info = index.getSubscriberInfo(findState.clazz); if (info != null) { return info; } } } return null; }
如果父类有SubscriberInfo和当前subsrciberInfo一样返回父类的
getMethodsAndRelease(findState)
0 条评论
回复 删除
下一页