之前分析的都是官方库的一些源码,现在打算尝试分析一些比较优秀的第三方开源库,选择分析EventBus,一方面是因为他的库不大,容易理解,这样我们也容易接受,如果一开始就项分析很大的库,会比较难吧
这个东西看着很高端的感觉,刚开始没明白这是用来干啥用的,他的源码也很简单,简单到都想不出来他的场景,后面看到以博客毛瑟顿开,[HandlerThread的特点],大概就是说,它用子线程的Looper,使我们的消息在子线程中处理
我相信,用过Android的人基本都会使用Handler,或者多多少少会听到这个东西,在安卓里面,这东西太重要了,如果你还不会基本用法,那应该是需要反省一下。当然,用过它的人也不必沾沾自喜,我们真的很了解Handler吗,还是说只会使用?你有看过他的每一行代码?仔细思考过吗?对于我来说,确实没有,所以我带着问题,想全面了解 Handler
开头前4个字节为 **CAFE BABE**,(两个十六进制字符为一个字节),后四个字节为Class 文件的版本号,先次版本号,后主版本号,能向下兼容,不能向后兼容
链表阻塞队列,顾名思义,也就是一个基于队列的阻塞式的链表实现,里面的代码写的很漂亮,生产者消费者模式在这个类中用的酣畅淋漓,其作者是大名鼎鼎的 Doug Lea,掌握这个类是比较重要的。里面很多实现基于锁,可以好好学习一下
UNLOCK 无锁 文件没有持有任何锁,即当前数据库不存在任何读或写的操作。其它的进程可以在该数据库上执行任意的读写操作。此状态为缺省状态
顾名思义,异步任务,就是说我们可以让我们异步执行任务,不过通常使用它是为了异步执行,主线程更新UI,我们都知道,Android 的UI更新操作,都会检查是否是主线程,如果不是的话就会报出异常,这一步是在ViewRootImpl里面做的,这里就不多说了
内部使用你所熟悉的数据结构最堆来实现,每次都是取堆顶的元素。至于堆怎么实现,其实很简单,就一个数组而已,这里就不讨论怎么实现堆了。默认是根据传入的对象进行比较建立初始堆的
LRU 咋一看这么熟悉,操作系统里面内存管理,页面置换时替换算法之一,英文全拼为 Least Recently Used 以为最近最少使用,简单来说,就是替换掉最老的数据。其核心思想为如果数据最近被访问过,那么将来被访问的几率也更高。另外一个比较简单的算法是 FIFO
sparse 是稀疏的意思,顾名思义,是一个稀疏数组,但实际上,他是一个key 只能为 int 的key-value 的数据结构,类似于HashMap