Flutter图片内存占用过大问题

  图片(Image)加载原理:

        Image 

        显示图⽚的Widget,通过ImageState管理ImageProvider的⽣命周期。

        ImageProvider:

        图⽚的抽象概念。 根据Image创建实例时调用的工厂方法的不同(Image.network或者Image.assetImage,使用ImageProvider的不同子类,如NetworkImage、AssetImage分别通过网络或本地获取图⽚字节数据(load)并进行解码,创建  ImageStream⽤于监听结果。图片的key为url+scale,⽤于描述图⽚的唯⼀以及是否已有缓存。

        ImageStream:

        图片load的目标对象。通过 ImageStreamCompleter 最后会返回⼀个 ImageInfo,⽽ImageInfo 中的ui.Image是RenderObject的⽬标绘制对象。

        ImageCache:

        图⽚缓存单例PaintingBinding.instance.imageCache(默认100MB或1000张图满⾜其⼀,就标记最先缓存的对象给释放其引用)

图片加载优化策略:

  1. 通过PaintingBinding.instance.imageCache设置图片缓存最大大小, 未显示图片及时调用evict方法释放。
  2. 使用Image.network时, 设置缓存的图片的宽高(cacheWidth、cacheHeight
  3. 若要实现图片本地文件缓存,加尼亚使用第三方图片插件cached_network_image,在使用该组件时克设置图片磁盘缓存最大宽高(maxWidthDiskCache, maxHeightDiskCache), 以避免缓存过大的图片原图,造成不必要的内存及磁盘消耗。
  4. Flutter内存占用较大,还可能是因为另外一种原因:Native侧和Flutter侧都使用大量相同的图片,图片在两种环境中均被加载到内存。解决这一问题的方案是外接纹理。即图片在Native侧加载注册一个FlutterTexture对象,然后生成一个纹理id,Flutter侧通过Texture(id)根据纹理id对进行访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/432003.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS标准文档流与脱离文档流,分享一点面试小经验

大厂面试真题整理 CSS: 1,盒模型 2,如何让一个盒子水平垂直居中? 3,css 优先级确定 4,解释下浮动和它的工作原理,清除浮动的方法? 5,CSS隐藏元素的几种方法 6&#xff0…

浅谈神经网络的正则化技术

神经网络的正则化技术是一组用于减少过度拟合(overfitting)的方法,其中过度拟合是指模型在训练集上表现很好,但在测试集上表现不佳的情况。这些技术有助于提高模型的泛化能力,使其在未见过的数据上表现更好。 以下是几种常见的神经网络正则化技术: Dropout: Dropout …

Python 多线程编程实战:threading 模块的最佳实践

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 线程的创建 1. 继承 threading.Thread 类 2. 使用 threading.Thread 对象 线程的同步 使用锁 线程的通信…

如何开发分销商城小程序呢_打造分销利器

打造分销利器,揭秘如何开发一款成功的分销商城小程序 在移动互联网时代,小程序以其轻便、快捷的特点,成为了连接用户与服务的桥梁。其中,分销商城小程序更是受到了广大商家的青睐。那么,如何开发一款成功的分销商城小…

PCM会重塑汽车OTA格局吗(1)

目录 1.汽车OTA概述 2.ST如何考虑OTA? 2.1 Stellar四大亮点 2.2 PCM技术视角下的OTA 3.小结 1.汽车OTA概述 随着智能网联汽车的飞速发展,汽车OTA也越来越盛行; 目前来讲OTA分为FOTA和SOTA(Software-over-the-air)两种,区别…

解决win10串口一直被占用

目录 问题描述解决方法 问题描述 串口设备一直被占用,换串口也没有用,永远都是串口正在被使用,甚至换硬件设备也不行,都快烦死了 解决方法 输入这个: 删除这个玩意,计算机\HKEY_LOCAL_MACHINE\SYSTEM\Cu…

Reqable爬虫抓包工具(国产网络调试工具)

官网界面截图: 官网地址:https://reqable.com/zh-CN/windows/ 历史由来: Reqable的前身是HttpCanary(一款Android平台应用程序),但是国内开发者推翻了所有的技术栈,并用C和Flutter重写&#x…

Tensorflow2.0笔记 - 计算梯度

本笔记主要记录tf.GradientTape和tf.gradient的用法 import tensorflow as tf import numpy as nptf.__version__#要计算梯度的所有参数计算过程必须放到gradient tape中 #with tf.GradientTape as tape: w tf.constant(1.) x tf.constant(2.)with tf.GradientTape() as tap…

在线部署ubuntu20.04服务器,安装jdk、mysql、redis、nginx、minio

查看服务器版本为20.04 lsb_release -a服务器初始账号密码 sxd / 123456 首先,更改自身密码都输入123456 sudo passwd 创建最高权限root账号,密码为 123456 su root 更新源列表 sudo apt-get update 安装 openssh-server和vim,途中输入y sudo ap…

46、Numpy手推共空间模式CSP,用于脑电EEG信号分类

一、Numpy实现CSP公式及对应的代码 CSP全部流程: 1、CSP先将数据按照类别分类,两类数据可分为E1、E2 2、计算分类后的原始数据的协方差矩阵: 方差矩阵: C协方差矩阵,E原始EEG信号,trace求迹 实现代码&a…

使用java的Stream流进行Collectors.groupingBy分组后生成Map,对Map进行删除原集合是否会发生改变

在Java中,当我们使用Collectors.groupingBy方法对集合进行分组操作时,生成的新映射(Map)是基于原始集合(allItems)的数据结构和内容创建的。这意味着,如果你更改了新的映射allItemMap中的值&…

xss.haozi.me:0X12

</script> <script>alert(1)\</script>

[数据结构]OJ一道------用栈实现队列

题目来源:232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 解题思路来源:力扣官方题解 https://leetcode.cn/problems/implement-queue-using-stacks/solutions/632369/yong-zhan-shi-xian-dui-lie-by-leetcode-s-xnb6/ 首先我们先来看题目: 给的代码: typedef s…

基于springboot的计算机类考研交流平台(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 教育发展不仅仅是关乎到每一位学生的大事情&#xff0c;更是一个国家发展的基本方针。教育发展当中最重要的就是高校学生的教学工作&#xff0c;信息技术也是能够改变我们生活方式的一种强大力量&#xf…

EdgeX Foundry - Modbus 设备服务

文章目录 一、Modbus 设备服务1.概述2.协议属性3.数据类型转换3.1.读命令3.2.写命令3.3.何时转换数据3.4.支持的转换 二、连接 Modbus 设备1.docker-comepse2.设备配置文件3.Modbus 配置4.启动 EdgeX Foundry5.Modbus 测试工具6.访问 UI6.1. consul6.2. EdgeX Console 7.测试7.…

【深度学习笔记】计算机视觉——单发多框检测(SSD)

单发多框检测&#xff08;SSD&#xff09; sec_ssd 在 sec_bbox— sec_object-detection-dataset中&#xff0c;我们分别介绍了边界框、锚框、多尺度目标检测和用于目标检测的数据集。 现在我们已经准备好使用这样的背景知识来设计一个目标检测模型&#xff1a;单发多框检测&…

CSS小知识

文章目录 1. box-sizing属性描述的是什么&#xff0c;可以设置为哪些值&#xff1f; 1. box-sizing属性描述的是什么&#xff0c;可以设置为哪些值&#xff1f; box-sizing 属性定义如何计算一个元素的总宽度和总高度&#xff0c;主要设置是否需要加上内边距(padding)和边框等…

http代理IP适合什么场景使用?HTTP代理IP的优势在哪里呢?

HTTP代理IP在多种场景下都能发挥重要作用&#xff0c;尤其是在网络请求处理、数据抓取、爬虫应用以及隐私保护等方面。下面&#xff0c;我们将详细探讨HTTP代理IP适用的场景以及其所具备的优势。 一、HTTP代理IP适合什么场景使用&#xff1f; 1. 网络请求处理&#xff1a;在进行…

第六篇:人工智能与机器学习技术VS数据迁移(Data Migration)--- 我为什么要翻译介绍美国人工智能科技巨头IAB公司?

(source: 图片来自麻省理工官网&#xff09; IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;…

opencv dnn模块 示例(24) 目标检测 object_detection 之 yolov8-pose 和 yolov8-obb

前面博文【opencv dnn模块 示例(23) 目标检测 object_detection 之 yolov8】 已经已经详细介绍了yolov8网络和测试。本文继续说明使用yolov8 进行 人体姿态估计 pose 和 旋转目标检测 OBB 。 文章目录 1、Yolov8-pose 简单使用2、Yolov8-OBB2.1、python 命令行测试2.2、opencv…