16.手写图片加载框架ImageLoader
概述 第三方开源的图片框架很多,这里自己去写一个的目的是通过这样一个写的过程,拓展自己对架构设计的理解,包括设计模式,线程,策略,缓存等等。另外大型的框架例如Glide,代码很完善,扩展性很高,但是阅读起来有难度,而实际上,这些框架底层实现原理都是类似的,所以通过构建一个简单框架的过程更加有助于对其原理的理解,算是为阅读复杂的第三方源码打下一个基础。 github地址:https://github.com/renzhenming/ImageLoader.git 今天的框架要实现一下的功能: 1.根据用户需求可以灵活配置(建造者模式) 2.支持高并发,图片加载的优先级 3.支持可以选择不同的加载策略,对加载策略进行扩展 4.二级缓存 加载图片时内存中已经加载了,则从内存中加载,不存在去外置卡中5.加载,外置还不存在则从网络下载 6.并对缓存策略可以扩展 7.支持从加载过程中显示默认加载图片 8.支持加载失败时 显示默认错误图片 9.图片显示自适应。从网络加载下来的图片经最佳比例压缩后显示不能失真变形 10.支持请求转发,下载 用到的模式: 1.生产者 消费者模式 2.建造者模式 3.单例...