Glide预加载
- glide# preload()缓存
如何采用DiskCacheStrategy.RESOURCE会导致在真正使用的时候缓存不会起作用,白白浪费流量(无特殊要求默认策略即可)
使用 asBitmap(),asDrawable() 效果一致。调用时都是用这种DATA_DISK_CACHE缓存类型
且asDrawable() 也会生成一个BitmapDrawable(包裹着一个Bitmap对象)
默认的策略是DiskCacheStrategy.AUTOMATIC
DiskCacheStrategy有五个常量:
Glide里的缓存
默认情况下,Glide 会在开始一个新的图片请求之前检查以下多级的缓存:
活动资源 (Active Resources) - 现在是否有另一个 View 正在展示这张图片?
内存缓存 (Memory cache) - 该图片是否最近被加载过并仍存在于内存中?
资源类型(Resource) - 该图片是否之前曾被解码、转换并写入过磁盘缓存?
数据来源 (Data) - 构建这个图片的资源是否之前曾被写入过文件缓存?
前两步检查图片是否在内存中,如果是则直接返回图片。后两步则检查图片是否在磁盘上,以便快速但异步地返回图片。
如果四个步骤都未能找到图片,则Glide会返回到原始资源以取回数据(原始文件,Uri, Url等)。
磁盘缓存策略(Disk Cache Strategy)
DiskCacheStrategy 可被 diskCacheStrategy 方法应用到每一个单独的请求。
目前支持的策略允许你阻止加载过程使用或写入磁盘缓存,选择性地仅缓存无修改的原生数据,或仅缓存变换过的缩略图,或是兼而有之。
默认的策略叫做 AUTOMATIC ,它会尝试对本地和远程图片使用最佳的策略。当你加载远程数据(比如,从URL下载)时,AUTOMATIC
策略仅会存储未被你的加载过程修改过(比如,变换,裁剪–译者注)的原始数据,因为下载远程数据相比调整磁盘上已经存在的数据要昂
贵得多。对于本地数据,AUTOMATIC 策略则会仅存储变换过的缩略图,因为即使你需要再次生成另一个尺寸或类型的图片,取回原始数
据也很容易。
Glide.with(imageView.load(banner.getCoverUrl()).apply(RequestOptions.placeholderOf(new ColorDrawable(ContextCompat.getColor(mContext, R.color.otherColorSecondary)))) .into(imageView);
使用中一个小问题,view不需要加载到界面显示时,不设置listener(new RequestListener(){})图片不会被加载