当前位置:首页 » 文件管理 » fresco本地缓存

fresco本地缓存

发布时间: 2023-05-29 18:53:52

㈠ frescocache是什么文件

你好,很高兴为你解答

fresco cache
壁画的缓存

希望我的回答对你有帮助,满意请采纳。

㈡ Android图片框架对比

对比现在主流图片框架的优势和缺点,在实际项目中如何选择适合自己的框架;

Glide、Fresco、Picasso、ImageLoader
共同优点:

以上名词介绍

在分析他们的差异、优缺点之前,我们先了解图片缓存通用的概念:

以上概念在不同框架之间可能不同,比如Displayer在ImageLoader中叫做ImageAware,在Picasso和Glide中叫做Target。

以上为Glide的总体设计图。
整个库分为RequestManager(请求管理器)、Engine(数据获取引擎)、Fetcher(数据获取器)、MemoryCache(内存缓存)、DiskLRUCache(本地缓存)、Transformation(图片处理)、Encoder(编码处理)、Registry(图片类型以及解析器配置)、Target(目标)等模块。

简单流程: Glider收到加载及显示资源任务,创建Request并将它交给RequestManager,Request启动Engine去数据源获取资源,得到资源后通过Transformation处理后交给Target.
Glide依赖DiskLRUCache、GifDecoder等开源库去完成本地缓存和Gif图片解密工作;

为Bitmap 维护一个BitmapPool对象池, 对象池的主要目的是通过减少大对象的分配以重用来提高性能!

缺点
①图片质量低:因为机制不同,速度快,但是图片的质量降低了RGB565;
②多尺寸缓存导致内存和磁盘占用多:根据ImageView大小来缓存,可能会导致一张图片可能根据展示情况来缓存不同尺寸的几份;

扩展理解参考: https://www.jianshu.com/p/1ab5597af607

以上为Picasso的总体设计图。
整个库分为Dispatcher、RequestHandler以及Downloader、PicassoDrawable等模块。
简单流程: Picasso收到加载显示图片任务后,创建Request并将它交给Dispatcher,Dispatcher分发任务到具体RequestHandler,任务通过MemoryCache及Handler(数据获取接口)获取图片,图片获取成功后通过PicassoDrawable显示到Target中;

上面Data的File system部分,Picasso没有自定义本地缓存的接口,默认使用http的本地缓存,API19以上使用okhttp,一下使用UrlConnection,所以如果需要自定义本地缓存就需要自定义Downloader;

缺点 :加载速度没有其他框架快;
特点 :只缓存一个全尺寸的图片,根据需求的大小在压缩转换;

以上为Fresco的总体设计图
整个库分为UI:DraweeView(View控件)、Drawable(图片数据)、DraweeController(图片控制器)、DraweeHiierarchy(图片体系);Core:DataSource(数据源)、ImagePipeline(图像管道)、Procer(生产者)、ProcerFacotry(生产工厂)、Subcriber(订阅)、Supplier(供应者)、Consumer(消费者);IO/Data:MemoryCache(内存缓存)、Network、DiskCache(磁盘缓存)、Recourse(本地资源)

简单流程: 从上面的结构可以看出,fresco主要采用了工厂+建造者的模式实现功能,逻辑划分比较清楚;Fresco框架整体是一个MVC模式,DrawableView--->View用来显示顶层视图、DrawableController--->Control控制加载图片的配置 事件的分发、DrawableHierarchy--->Model 用于存储和描述图片信息,同时也封装了一些图片的显示和视图层级的方法;ImagePipeline模块负责从网络、本地文件系统、本地资源加载图片

缺点:
①框架大,影响Apk体积;
②一定的学习成本,使用比较繁琐,需要使用内部提供的ImageView控件,使用起来比较复杂;

㈢ oppo手机文件夹frescov2ols.100.1是什么用

一般是软件缓存,没有实在意义的文件夹可以直接删除。

㈣ RN 图片框架缓存机制

RN图片框架iOS采用的是SDWebImage, 安卓采用的是Fresco

SDWebImage分为两级缓存,内存缓存和文件缓存,其中文件缓存的策略:
1.默认保存一个星期,优先清理过期的图片
2.清理过期图片后,计算出未过期的缓存大小总和,并与最大的缓存空间的 1/2 作对比;
3.按时间嫌镇最久未被访问(或修改)的顺序,对缓存数据做一个排序;
4.根据排闭者闷序结果继续清理 时间最久远的缓存图片数据,直到剩余的缓存大小 小于最大空间的1/2时,停止清理;

Fresco 分为三级缓存轿弯,bitmap缓存、未解码图片的内存缓存和磁盘缓存, 缓存策略:
内存缓存默认5分钟,超过两个小时加载的图片就更新到磁盘缓存
磁盘缓存设有缓存上限,根据图片占用的磁盘大小来的,高端机型是40M,中端10M,低端2M
没有固定的清理时间,而是按访问时间从远到近来清理

㈤ 如何手动清理Fresco的缓存

清理手机缓存文件,可以尝试以下方法进行清理:
1、手机安装一个腾讯手机管家,在健康优化里面点一下垃圾清理,再选择垃圾扫描,扫描完成后敬搜立即清理按完成就可以了。
2、在设置里面可以对漏山应亮搜历用程序进行单个清理缓存。设置-更多设置-应用程序-选择要清理的程序-清除缓存和数据。
3、以上还无法清除干净的话可以选择恢复出厂设置,这样可以清除所有数据。不过清理之前要做好备份处理,否则会导致所以数据丢失。

㈥ 怎么查看 fresco 磁盘缓存 目录

public class ImagePipelineConfigUtils {

//分配的可用内存
private static final int MAX_HEAP_SIZE = (int) Runtime.getRuntime().maxMemory();

//使用的缓存数量
private static final int MAX_MEMORY_CACHE_SIZE = MAX_HEAP_SIZE / 4;

//小图极低磁盘空间缓存的最大值(特性:可将大量的小图放到额外放在另一个磁盘空间防止大图占用磁盘空间而删除了大量的小图)
private static final int MAX_SMALL_DISK_VERYLOW_CACHE_SIZE = 20 * ByteConstants.MB;

//小图低磁盘空间缓存的最大值(特性:可将大量的小图放到额外放在另一个磁盘空间防止大图占用磁盘空间而删除了大量的小图)
private static final int MAX_SMALL_DISK_LOW_CACHE_SIZE = 60 * ByteConstants.MB;

//默认图极低磁盘空间缓存的最大值
private static final int MAX_DISK_CACHE_VERYLOW_SIZE = 20 * ByteConstants.MB;

//默认图低磁盘空间缓存的最大值
private static final int MAX_DISK_CACHE_LOW_SIZE = 60 * ByteConstants.MB;

//默认图磁盘缓存的最大值
private static final int MAX_DISK_CACHE_SIZE = 100 * ByteConstants.MB;

//小图所放路径的文件夹名
private static final String IMAGE_PIPELINE_SMALL_CACHE_DIR = "ImagePipelineCacheSmall";

//默认图所放路径的文件夹名
private static final String IMAGE_PIPELINE_CACHE_DIR = "ImagePipelineCacheDefault";

public static ImagePipelineConfig getDefaultImagePipelineConfig(Context context) {

//内存配置
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
MAX_MEMORY_CACHE_SIZE,// 内存缓存中总图片的最大大小,以字节为单位。
Integer.MAX_VALUE,// 内存缓存中图片的最大数量。
MAX_MEMORY_CACHE_SIZE,// 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
Integer.MAX_VALUE,// 内存缓存中准备清除的总图片的最大数量。
Integer.MAX_VALUE);// 内存缓存中单个图片的最大大小。

//修改内存图片缓存数量,空间策略(这个方式有点恶心)
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};

//小图片的磁盘配置
DiskCacheConfig diskSmallCacheConfig = DiskCacheConfig.newBuilder().setBaseDirectoryPath(context.getApplicationContext().getCacheDir())//缓存图片基路径
.setBaseDirectoryName(IMAGE_PIPELINE_SMALL_CACHE_DIR)//文件夹名
.setMaxCacheSize(MAX_DISK_CACHE_SIZE)//默认缓存的最大大小。
.setMaxCacheSizeOnLowDiskSpace(MAX_SMALL_DISK_LOW_CACHE_SIZE)//缓存的最大大小,使用设备时低磁盘空间。
.(MAX_SMALL_DISK_VERYLOW_CACHE_SIZE)//缓存的最大大小,当设备极低磁盘空间
.setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
.build();

//默认图片的磁盘配置
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder().setBaseDirectoryPath(Environment.getExternalStorageDirectory().getAbsoluteFile())//缓存图片基路径
.setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR)//文件夹名
.setMaxCacheSize(MAX_DISK_CACHE_SIZE)//默认缓存的最大大小。
.setMaxCacheSizeOnLowDiskSpace(MAX_DISK_CACHE_LOW_SIZE)//缓存的最大大小,使用设备时低磁盘空间。
.(MAX_DISK_CACHE_VERYLOW_SIZE)//缓存的最大大小,当设备极低磁盘空间
.setDiskTrimmableRegistry(NoOpDiskTrimmableRegistry.getInstance())
.build();

//缓存图片配置
ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context)
.setBitmapsConfig(Bitmap.Config.RGB_565)
.(mSupplierMemoryCacheParams)
.setSmallImageDiskCacheConfig(diskSmallCacheConfig)
.setMainDiskCacheConfig(diskCacheConfig)
.setMemoryTrimmableRegistry(NoOpMemoryTrimmableRegistry.getInstance())
.(true);

// 就是这段代码,用于清理缓存
NoOpMemoryTrimmableRegistry.getInstance().registerMemoryTrimmable(new MemoryTrimmable() {
@Override
public void trim(MemoryTrimType trimType) {
final double suggestedTrimRatio = trimType.getSuggestedTrimRatio();

Loger.d(String.format("onCreate suggestedTrimRatio : %d", suggestedTrimRatio));
if (MemoryTrimType.OnCloseToDalvikHeapLimit.getSuggestedTrimRatio() == suggestedTrimRatio
|| MemoryTrimType..getSuggestedTrimRatio() == suggestedTrimRatio
|| MemoryTrimType..getSuggestedTrimRatio() == suggestedTrimRatio
) {
ImagePipelineFactory.getInstance().getImagePipeline().clearMemoryCaches();
}
}
});

return configBuilder.build();
}
}

㈦ 关于fresco加载图片的缓存设置及列表加载等

之前写过一篇文章,是关于Glide的一些坑, Glide加载gif及本地视频缩略图的坑  ,因为我们公司的应用是涉及到发帖子的功能,这里用户是可以上传gif的,而某些文件本身就有一些问题的gif,用Glide加载不出来,上面的文章末尾说过了,所以采用了Fresco,用了Fresco,才发现坑更大啊,一点一点说吧。

首先要用到他们自己的View那些我就不重复了,功能确实强大,后面讲一些可配置可不配置但是配置了会更爽的内容

1,设置缓存大小等,可以参考这个 Fresco缓存设置  ,设置了之后,再不会出现已经加载过的图片,被自动清理了

2,列表加载图片,一定要setResizeOptions和setOldController,如下图

图中的width和height不一定要很准确,比如你是Grid,但是又有间隙缓唯,那width你设置成 screenWidth/spanCount的大小就好了,滑动起来跟Glide差不多了

3,photoView,fresco貌似不能直接用photoView,没关系,有这个 PhotoDraweeView  使用起来跟photoView差不多

4,长图加载,我用的是 BigImageViewer  里面包含了放大缩埋哪差小的功能了

最后,用Fresco,我加载相册还是照样卡,跟Glide完全不能比,设置了setAutoPlayAnimations(false),.setBitmapsConfig(Bitmap.Config.RGB_565)都还是很卡,用的 FrescoImageLoader.java  的也是很卡,不知道有人解决了吗弯皮

㈧ 如何手动清理Fresco的缓存

经常清理垃圾,才能保证电脑流畅。
试试腾讯电脑管家,垃圾清理和电脑加速这两个功能是同类软件必备的功能
清理加速,会从多方面对系统内部会产生运行阻碍的数据文件进行碎片整合,包括系统垃圾、视频垃圾、网游垃圾、恶意插件等多方面进行清理,同时还可以进行自动清理“扫一扫”,根据需要可以进行定期清理设定。

㈨ 如何手动清理Fresco的缓存

Fresco是一个强大的系统用于在Android应用中展示图片。它负责图片的加载和展示,所以你不做任何事情。
Fresco能够从轿陪纤网络中,本地存储或本地资源加载图片。为节省数据和乱巧CPU,它拥有三级缓存:两级在内存中,加一个在外闭仿部存储。
Fresco的Drawees 能够显示占位符,直到你的图片已加载,并自动显示到图像时到达。当图像从屏幕消失时,它会自动释放内存。
Fresco 支持Android 2.3 (Gingerbread) 以上的版本。

㈩ Fresco要点及优化

1.在Application中初始化,需要打开对PNG等图片让誉的自动缩放特性(默认只支持JPG)

2.如需对网络图也能进行resiz处理以减少内存坦穗段开销 ()

1.加载文件路径不要直接直接使用 Uri.parse(),而要使用 Uri.fromFIle()。parse不会转义文件路径的unicode字符,导致加载失败;

2.ResizeOptions一定尽量要设置,并且是ImageView所显示的大小,这样可以尽可能的缩减加载族哪的图像尺寸,节约内存;

3.加载到BitmapCache的图片都是带Resize的,如果两处加载同一个Uri,但ResizeOptions不同的话,那也是当做两张图片;

4.GIF图闪动:Fresco是不在内存中缓存GIF图的,每次显示都是重新解码,闪动可以设置ImageDecodeOption中的setDecodePreviewFrame(true),并不设置placeholder的图片;

热点内容
特斯拉modely买哪个配置 发布:2024-05-09 09:32:01 浏览:61
androidpc机 发布:2024-05-09 09:31:51 浏览:469
服务器配置外网地址查询 发布:2024-05-09 09:22:31 浏览:657
win系统如何组建sip服务器 发布:2024-05-09 08:52:21 浏览:279
基于图像匹配算法 发布:2024-05-09 08:35:32 浏览:29
编译安卓内核源码 发布:2024-05-09 08:22:32 浏览:185
骑砍二霸主怎么连接联机服务器 发布:2024-05-09 08:21:58 浏览:547
c语言引用参数 发布:2024-05-09 08:21:58 浏览:252
怎么查看服务器流量 发布:2024-05-09 08:12:34 浏览:880
不用压缩泵 发布:2024-05-09 08:12:33 浏览:851