欢迎光临散文网 会员登陆 & 注册

职场人产品思维训练指南

2023-08-18 02:33 作者:bili_51805000088  | 我要投稿

职场人产品思维训练指南

download:https://www.zxit666.com/5373/

中心类及办法引见

启动缓存相关类

PaintingBinding:图片缓存类和着色器预加载,该类是基于框架的应用程序启动时绑定到Flutter引擎的胶水类,在启动入口main.dart的runApp办法中创立WidgetsFlutterBinding类时被初始化的,经过掩盖父类的initInstances()办法初始化内部的着色器预加载(Skia第一次在GPU上绘制需求编译相应的着色器,这个过程大约20ms~200ms)及图片缓存等,图片缓存以单例的方式(PaintingBinding.instance.imageCache)对外提供办法运用,也就是说这个图片缓存在APP中是全局的,并在这个类中还提供了图像解码(instantiateImageCodec)、缓存肃清(evict)等功用。

ImageCache:图片缓存类,默许提供缓存最大个数限制1000个对象和最大容量限制100MB,由于图片加载过程是一个异步操作,所以缓存的图片分为三种状态:已运用、已加载、未运用,分别对应三个图片缓存列表,当图片列表超限时会将图片缓存列表中最近最少运用图片停止删除,缓存列表分别是:活泼中图片缓存列表(\_cache)、已加载图片缓存列表(\_pendingImages)、未活泼图片缓存列表(_liveImages),并对外提供以下办法:获取缓存(putIfAbsent)、清空缓存(clear、clearLiveImages)、驱赶单个图片(evict)、最大缓存个数限制(maximumSize)、最大缓存大小限制(maximumSizeBytes)等办法。 

从源码中我们能够看到缓存列表是Map类型,Flutter中的Map创立的对象是LinkedHashMap是有序的,按键值插入次第迭代,Flutter运用LinkedHashMap存储图片数据并完成相似LRU算法的缓存,当缓存列表中的图片被运用后会将图片数据重新插入到缓存列表的末尾,这样最近最少运用的图片一直会被放在列表的头

当缓存列表增加图片数据后,会经过最大缓存个数和最大缓存大小两个纬度停止检查缓存列表能否超限,若存在超限状况则经过Map的keys.first办法获取缓存列表头部最近最少运用的图片对象停止删除,直到满足缓存限制。

启动缓存小结:

Flutter启动后在PaintingBinding中创立ImageCache缓存,图片缓存是全局的并以单例方式对外提供运用办法,缓存默许最大个数限制1000个对象、最大容量限制100MB,缓存中的Map列表经过key/value方式存储图片信息,并经过keys.first办法完成的相似LRU算法管理图片缓存列表,对外提供putIfAbsent()办法获取已缓存图像,若缓存中不存在则经过回调图片加载类中的load()办法加载图片数据,另外图片缓存中还提供clear()和evict()办法用来删除缓存。


职场人产品思维训练指南的评论 (共 条)

分享到微博请遵守国家法律