github地址
Glide基础用法加缓存
添加Glide
在module的build.gradle中添加以下依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
/** 250 MB of cache. */
int DEFAULT_DISK_CACHE_SIZE = 250 * 1024 * 1024
Glide.get(this).clearMemory()
Glide.get(MainActivity.this).clearDiskCache()
public class WangGlideModule implements GlideModule {
}
<application>
...
</application>
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
运行后手机文件夹里面多出来一个GlideDisk文件夹,这个就是磁盘缓存的目录
glide 用法 Glide.with(mContext).load(url)
.into(iv)
with ()方法返回 RequestManager---》用于请求的设置
load()方法返回 RequestBuilder---》请求参数确认
into()方法返回 ViewTarget 同时开始测量图片进行加载
调用into方法时 创建一个request 默认为SingleRequest
然后调用request 的begin() 开始请求;---》SingleRequest.onSizeReady()
调用engine进行load
先创建每个request的 EngineKey 用来区分不同的图片请求
用key 先从活跃的缓存(loadFromActiveResources)文件去取图片资源 ---一级缓存
从缓存汇中取图片资源(loadFromCache) --- 二级缓存
从网络加载图片 EngineJob start开始加载图片 ---三级缓存
网络加载图片 流程
由EngineJob 启动DecodeJob 的run()方法执行runWrapped()---》runGenerators()--》currentGenerator.startNext() (SourceGenerator#startNext)--- loadData.fetcher.loadData()---
HttpUrlFetcher#loadData --- HttpUrlFetcher#loadDataWithRedirects()获取图片资源InputStream
利用 HttpURLConnection 《内部使用okhttp》
获取资源inputstream 流开始回调callback.onDataReady--》 cb.onDataFetcherReady--》decodeFromRetrievedData()--notifyEncodeAndRelease()--notifyComplete-- entry.executor.execute(new CallResourceReady()---SingleRequest#onResourceReady()--target.onResourceReady()--ImageViewTarget#onResourceReady---BitmapImageViewTarget#setResource---显示图片view.setImageBitmap(resource)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)