记录源码学习列表

工欲善其事必先利其器 ~

1.PullToRefresh

2.ImageLoader

学习点:

2.1 图片的三级缓存策略(内存,磁盘,网络):大道理,谁都懂 0.0~

2.2 内存缓存的几种策略及其实现、操作内存缓存时如何实现锁机制;

2.2.1 先进先出策略(FIFOLimited,内存超出设置的大小,最先添加的bitmap最先删除)

2.2.2 最少最近使用策略(LRU,内存超标时,最近最少使用的bitmap先删除,ImageLoader默认使用策略)

2.2.3 最大限制策略(LargestLimited,内存超标时,bitmap占内存最大的先删除)

2.2.4 弱引用策略(这种策略其实大部分都结合在其他几种策略中)

...还有几种策略就不一一举了,感觉比较经典的就上面几种。

2.3 磁盘缓存的几种策略及其实现、操作磁盘缓存时如何实现锁机制;

2.3.1 LimitedAgeDiskChche,如同英文名的意思一般,根据age来删除磁盘中指定key的内容缓存。

2.3.2 UnLimitedDiskCache,无条件限制磁盘缓存策略。

2.4 如何实现的异步(线程池+Handler)、同步显示图片;

2.5 ListView、GridView等这些快速下拉上拉时(如ListView子孩子被回收复用时图片加载任务的并发处理)图片显示的锁机制。

解决方案一:这个解决方案是根据Google Android官方然后译文过来的,N年前Afinal的开源框架其中FinalBitmap就是使用这种方案。

解决方案二:就是ImageLoader源码中根据URI获取对应的锁,并结合ListView/GirdVIew子视图的回收、复用状态来实现。

Volley的 NetworkImageView控件在处理并发的问题上也是采用方案二来显示图片的,如果加载的item的图片的url跟当前加载的url不同,则将请求队列中这个url的请求取消掉。


3.Android的Handler、Looper回调机制


4.afinal 主要有四大模块:FinalActivity、 FinalDB、FinalBitmap、FinalHttp(PS:ORZ,公司竟然还在用这个。。算了,只能顺手摸摸源码)。

学习点:

5.1 FinalActivity如何实现的注解、Java的注解知识点;

5.2 FinalBitmap采用的图片缓存策略(内存,磁盘,网络)、如何实现异步显示图片(线程池);

5.3 FinalHttp如何实现网络的封装、http gzip技术实现的数据压缩等。虽然FinalHttp是采用在Android5.1之后被废除的org.apache.http包,但还是可以学学作者是如何封装,抽象的,而且以后看其他网络相关的开源如Volley、okHttp,心中至少有个参照物,对比为什么更多人选Volley,okHttp。

5.Volley的源码学习笔记:






值得一看的Volley源码学习链接:Volley源码学习 (超级赞的请求流程图,类关系图,很容易就看清楚整个Volley的设计架构)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值