java - 如何在再次保存之前检查图像是否已经在内存中?
问题描述
我注意到在优化我的应用程序的性能时,Glide 必须检查图像是否已经在缓存中。现在问题来了。
它是如何工作的?
使用下面的代码,我总是会在类开始时再次保存图像并加载。
所以:
Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).donloadOnly(new SimpleTarget <File>(){
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation){
OGGER.debug("Photo downloaded");
}
});
Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(image_profile);
或者:
Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).donloadOnly(new SimpleTarget <File>(){
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation){
OGGER.debug("Photo downloaded");
Glide.with(mContext).load(Objects.requireNonNull(user).getImageurl()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(image_profile);
}
});
谢谢。:)
解决方案
正如他们在 DOCS 中提到的:
默认情况下,Glide 在开始对图像的新请求之前会检查多层缓存:
- 活动资源 - 此图像现在是否显示在另一个视图中?
- 内存缓存 - 此图像是否最近加载并仍在内存中?
- 资源 - 此图像之前是否已解码、转换并写入磁盘缓存?
- 数据 - 此图像之前获得的数据是否已写入磁盘缓存?
我强烈建议您阅读它。 https://bumptech.github.io/glide/doc/caching.html#caching-in-glide
要将图像加载到ivImg
(您的 ImageView)中,您只需执行以下操作:
Glide.with(context)
.load("http://via.placeholder.com/300.png")
.into(ivImg);
推荐阅读
- java - 问题:无法解析构造函数 CSVPrinter
- sql-server - 子查询返回超过 1 个值。如何解决?
- jsp - 在 for 循环 (jsp/jstl) 中操作 arraylist 元素而不使用 scriptlet
- c# - c# interop 你能用excel判断excel正在运行哪个文件吗?
- docker - 如何为 Swisscom elasticsearch 公共云 (CloudFoundry) 配置 Kibana
- sql-server - 服务器响应为:4.7.0 SSIS 中的临时服务器错误
- reactjs - 如何使用 React 路由器 5 以编程方式将路由层次结构提升一级?
- python - 如何为模板视图创建 URL?
- android - Android从表中获取所有行并发送到服务器
- flutter - 如何在颤动的另一个选项卡视图中制作选项卡视图?