在那个网站做义工好,网页设计实验报告结果分析,获取网站访客qq号,网站模板凡建站ExtendedImage
ExtendedImage 是一个Flutter库#xff0c;用于提供高级图片加载和显示功能。这个库使用了 image 包来进行图片的加载和缓存。如果你想修改缓存大小#xff0c;你可以通过修改ImageCache的配置来实现。
1. 获取ImageCache实例: 你可以通过PaintingBinding… ExtendedImage
ExtendedImage 是一个Flutter库用于提供高级图片加载和显示功能。这个库使用了 image 包来进行图片的加载和缓存。如果你想修改缓存大小你可以通过修改ImageCache的配置来实现。
1. 获取ImageCache实例: 你可以通过PaintingBinding.instance.imageCache获取到全局的ImageCache实例。
2. 修改缓存配置: 你可以通过修改maximumSize和maximumSizeBytes属性来调整缓存的数量和大小。 - maximumSize: 缓存中最多可以存储的图片数量。 - maximumSizeBytes: 缓存中图片总占用的最大字节数。
例如如果你想将图片缓存的最大数量设置为100张并且最大字节数设置为350MB你可以这样做
void main() {Global.init().then((_) runApp(const MyApp()));//扩大imageCache的缓存PaintingBinding.instance.imageCache.maximumSize 100;PaintingBinding.instance.imageCache.maximumSizeBytes 350 20; // 350MB}
在main函数中进行设置确保在应用启动时就进行了配置。
注意增加缓存大小会增加应用占用的内存可能导致性能问题特别是在内存有限的设备上。所以在调整这些设置时要谨慎确保根据你的应用需求和目标设备的硬件规格来进行适当的配置。
使用上述方法设置全局的imageCache缓存逻辑不设置的情况下默认maximumSizeBytes 为100MB。默认100M在多张750宽高的图片列表中很快会回收掉划出屏幕的图片用户超快速滑动时不够用。实测调整至350M左右开始效果明显改善。 maximumSizeBytes与磁盘缓存区大小的关系
maximumSizeBytes 设置的是 Flutter 的 ImageCache 对内存中的图片缓存所占用的最大字节大小。这个参数并不影响磁盘上的缓存大小。
在 Flutter 中ImageCache 通常用于存储加载过的图片以便快速再次访问。这些图片存储在应用的内存中而不是磁盘上。当应用尝试加载新的图片时ImageCache 会首先检查图片是否已经在缓存中。如果是就可以直接从内存中加载图片而无需再次从网络或磁盘加载从而提高了性能。
设置 maximumSizeBytes 的目的是为了防止应用占用过多的内存来存储图片特别是在加载大量或高分辨率图片的应用中。一旦缓存的大小超过了这个限制ImageCache 就会根据一定的策略如最近最少使用LRU策略开始淘汰一些图片释放内存。
如果你需要设置磁盘缓存的大小你需要使用 Flutter 的网络库如 dio 或 http结合一个磁盘缓存库如 flutter_cache_manager来实现。这通常涉及到将下载的文件保存到设备的文件系统并在需要时从那里加载它们。
在原生Android Glide库对于缓存的配置情况
Glide 默认使用的是 InternalCacheDiskCacheFactory这个工厂会为 Glide 创建一个内部磁盘缓存缓存的图片位于应用的内部存储空间中。默认情况下Glide 会为其磁盘缓存分配 250 MB 的空间。
缓存大小的计算逻辑大致如下
1. 内存缓存Glide 会使用应用可用内存的一定比例来作为内存缓存。默认情况下Glide 使用 LruBitmapPool 和 LruResourceCache并且默认分配的大小基于 MemorySizeCalculator 类计算得出。MemorySizeCalculator 会考虑设备的可用内存和屏幕分辨率。
2. 磁盘缓存对于磁盘缓存默认情况下 Glide 使用 InternalCacheDiskCacheFactory并分配 250 MB 的空间。这个值是在 DiskLruCacheWrapper 类中定义的。
如果你想要自定义这些缓存大小你可以创建一个自定义的 GlideModule并在 applyOptions 方法中使用 MemorySizeCalculator.Builder 来设置不同的内存缓存大小以及使用 InternalCacheDiskCacheFactory 或 ExternalPreferredCacheDiskCacheFactory 来设置不同的磁盘缓存大小。
例如
Override
public void applyOptions(NonNull Context context, NonNull GlideBuilder builder) {MemorySizeCalculator calculator new MemorySizeCalculator.Builder(context).setMemoryCacheScreens(2).setBitmapPoolScreens(3).build();builder.setMemorySizeCalculator(calculator);builder.setDiskCache(new InternalCacheDiskCacheFactory(context, 100 * 1024 * 1024));
}
在这个示例中内存缓存大小被设置为屏幕大小的两倍位图池大小被设置为屏幕大小的三倍磁盘缓存大小被设置为 100 MB。