####
—
基础系列 5:缓存(DiskLruCache)
LruCache原理
- 把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除;
- cache的某个值需要明确释放,重写entryRemoved();
- 作为缓存,肯定有一个缓存的大小(自定义sizeOf())。当你访问了一个item(需要缓存的对象),这个item应该被加入到内存中,然后移动到一个队列的顶部,如此循环后这个队列的顶部应该是最近访问的item了,而队尾部就是很久没有访问的item,这样我们就应该对队尾部的item优先进行回收操作;
- 用到了HashMap,那么就有这个数据存储对象的特点(KEY-VALUE),放入这个map的item应该会被强引用,要回收这个对象的时候是让这个key为空,这样就让有向图找不到对应的value,最终被GC
基础系列 04:序列化(Parcelable,Serializable)
Parcelable
-
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得
- 序列化分为两大部分:序列化和反序列化。
- 2.1 序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。
- 2.2 反序列化就是打开字节流并重构对象
- 如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据