Fresco.fetchDecodeImage大致流程以及涉及到的类
2016-06-13 10:35:56 0 举报
Fresco.fetchDecodeImage是Facebook开源的Android图片加载库Fresco中用于从网络或本地磁盘加载并解码图片的一个方法。它首先会检查缓存中是否存在对应的图片,如果存在则直接返回,否则才会进行网络请求或磁盘读取。获取到数据后,会通过BitmapFactory对数据进行解码,并使用GPU加速渲染。最后,将解码后的Bitmap放入内存缓存中,以备后续使用。涉及到的类主要有:FetchDrawableResultHandler、SimpleDraweeView等。
作者其他创作
大纲/内容
DiskCacheReadProducer
使用Android平台提供的BitmapFactory、BitmapFactory进行转码。由于转码之后图片已经被解码,因此还需要对图片进行编码,效率比不上NativeJpegTranscoder。
DynamicDefaultDiskStorage(DefaultDiskStorage)(DiskStorage)
DiskCacheWriteProducer
ThreadHandoffProducer
StagingArea
EncodedMemoryCacheProducer
DecodeProducer
ResizingAndRotateProducer
BitmapMemoryCacheGetProducer
PlatformDecoder(BitmapFactory)
GifDecoder(giflib)
BufferedDiskCache
1.负责磁盘空间释放(DiskTrimmable)2.根据磁盘缓存的一些控制参数,对磁盘缓存做一些清理工作
NetworkFetcherProducer
NativeJpegTranscoder(ImageTranscoder)
DefaultImageDecoder(ImageDecoder)
BitmapMemoryCacheKeyMultiplexProducer
1.用来保存正在被写入到磁盘的未解码图片文件2.同时也作为EncodedMemoryCache和DiskCache之间的一个缓冲区,提供图片查询、或者功能
基本就是DefaultDiskStorage的代理,实现了基本的磁盘文件的增删查功能
EncodedCacheKeyMultiplexProducer
SimpleImageTranscoder(ImageTranscoder)
mCacheExtriex(CountingLruMap)
CountingMemoryCache(MemoryCache)
使用Fresco自己实现的native-imagetranscoder进行转码
AddImageTransformMetaDataProducer
WebPDecoder(libwebp)
DiskStorageCache(FileCache)
PartialDiskCacheProducer
分段下载的逻辑,使用Http的Content-Range实现,不完整的图片生成CacheKey时,Url会加上fresco_partial=true的query
mExclusiveExtriex(CountingLruMap)
解析图片的尺寸、格式、旋转角度等,结果会被保存在EncodedImage中。已解析过的EncodedImage不会再次进行解析。
1.封装了FileCache的基本能力2.提供异步能力3.使用StagingArea作为一个缓冲区
BitmapMemoryCacheProducer
0 条评论
下一页