文章目录
网络加载
网络加载方案
方案一:默认基于HttpUrlConnection
方案二:提供与Google Volley和Square OkHttp快速集成的工具库
网络优化方案
方案一:绑定生命周期,停止不必要的加载
根据当前页面的生命周期,自动重新开始或暂停或取消结束请求
如果绑定的是Application,请求的生命周期将和应用一样长,不会自动取消
如果绑定的是Activity或Fragment,当前Activity或Fragment退出时,请求将会自动终止
方案二:提供同步加载和异步加载
异步加载使用Glide提供的线程池方案
同步加载使用开发者提供的线程或线程池
图片解码
图片解码方案
方案一:系统提供的BitmapFactory
图片解码优化方案
方案一:使用DownSampler
图片处理
对动图的处理
创建自定义Drawable类,继承Drawable,重写draw(Canvas)方法,每隔一段时间在Canvas上画不同的Bitmap
对图片的缩放、裁剪、变换
创建新的Matrix,对其进行缩放、裁剪、变换等操作
创建新的Bitmap对象,在其Canvas上利用新的Matrix对象绘制原Bitmap
图片缓存
可选择缓存的图片
原始图片、解码图片、转换后的图片
三级缓存
第一级缓存:活动资源
在内存中,当前正在使用的图片对象
第二级缓存:内存缓存
在内存中,最近使用过的的图片对象
第三级缓存:磁盘缓存
可选择的缓存方案:LRU
核心思想:当缓存满时,会优先淘汰那些近期最少使用的缓存对象
缓存中图片对象对应的Key
将图片的宽高、Trasformation等信息作为Key的部分内容
存取操作
存操作
加载图片完成之后,放入活动资源
图片对象释放时,从活动资源中删除,加入到内存缓存
取操作
针对图片加载的请求,先活动资源,再内存缓存,再磁盘缓存,最后网络
从内存缓存找到,从内存缓存删除,添加到活动资源