![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
开源库学习
文章平均质量分 95
优秀开源库学习
孔小乐
这个作者很懒,什么都没留下…
展开
-
EventBus 开源库学习(三)
上一节根据EventBus的使用流程把实现源码大体梳理了一遍,因为精力有限,所以看源码都是根据实现过程把基本流程看下,中间实现细节先忽略,否则越看越深不容易把握大体思路,这节把一些细节的部分再看看。注册事件时,主要是在项目运行时通过反射来查找注解方法信息,如果项目中有大量的注解方法,必然会对项目运行时的性能产生影响。查找注解方法信息的方式,生成一个辅助的索引类来保存这些信息,这个索引类就是。以上为注解方法查找的过程。方法,这样就获取到了之前编译生成的注解方法。看样子都是关于索引的,分析的时候都是使用的。原创 2023-08-04 15:22:23 · 1364 阅读 · 0 评论 -
EventBus 开源库学习(二)
判断是否启动了事件发送流程,如果已经启动了,不在做处理,加入列表中的事件会轮到处理。注解的函数,由于一个类中可能监听多个事件,因此获取的方法可能是多个,所有的方法赋值到一个List列表中,然后遍历这个列表进行注册。,用来保存发送线程的发送状态信息:当前线程是否为主线程,是否在发送事件,发送的事件列表、接收事件的订阅者等。中获取该订阅者订阅的所有事件,因为一个订阅者可以订阅多个不同的事件,因此获取的是个List列表。,向上找到所有父类事件类,然后遍历找到所有事件的订阅者,并发送事件,如果为。原创 2023-08-04 15:16:59 · 1340 阅读 · 0 评论 -
EventBus 开源库学习(一)
正常我们都是先订阅,才能接收到发出的事件,sticky的作用就是订阅者可以先不进行注册,事件先发出,再注册订阅者,同样可以接收到事件,并进行处理。是一款在 Android 开发中使用的发布-订阅事件总线框架,基于观察者模式,将事件的接收者和发送者解耦,简化了组件之间的通信,使用简单、效率高、体积小。该模式下,在主线程(UI线程)发送事件,则直接在主线程处理事件,如果处理方法中有耗时操作就会堵塞进程。是优先级,int类型,默认值为0。放在主线程并连续发送两次,接收事件的函数加上耗时操作,运行结果如下,两次。原创 2023-08-04 14:55:26 · 1552 阅读 · 0 评论