Android 图像缓存 - 如何?

2023-12-26

我想以前已经问过很多次了,但仍然有些事情我不太明白。

我尝试了两种不同的方法:

  1. 将所有图像保留在内存中,当开始超过一定限制时,开始删除它们
  2. 让 Android 使用 SoftReferences 解决这个问题

2. 有时,我分配它们时,它只是清理它们!我不会分配太多 - 30-40 张 50x50 像素的图像。

所以我坚持一个。问题是极限是多少?

  1. 我可以从设备中获取一些可靠的信息,了解我还剩下多少位图内存吗?我做了一些研究,观察 DDMS 值,它只是占用越来越多的空间(如果我不清理的话)直到​​它爆炸。前一秒只剩下200K,下一秒系统又提供了2M……
  2. 我目前正在使用一些基于设备型号或屏幕尺寸的启发式决策。我认为从长远来看这是死胡同。在某些手机上出现内存异常,在其他手机上完全免费。
  3. 是否有第三种解决方案,即正确的解决方案?

最重要的问题:你是recycle()-你的位图?这对于姜饼之前的应用程序非常重要(也许姜饼之后也是如此)。

正在观看Android 应用程序的内存管理Google I/O 2011 会议 http://www.youtube.com/watch?v=_CruQY55HOk帮助我更好地了解 Android 开发的特殊性。

该视频提到了一个名为MAT - a 内存分析器 http://eclipse.org/mat- 这对于确定内存中是否存在已泄漏的对象非常有用。您拥有的数量可能比您认为的 30-40 个还要多。

为了查看和/或记录堆的当前大小等,我建议使用以下代码这个关于 Android 内存不足异常的答案 https://stackoverflow.com/questions/3238388/android-out-of-memory-exception-in-gallery/3238945#3238945.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 图像缓存 - 如何? 的相关文章

随机推荐

  • 使用 SheetJS 将包含合并单元格的 .xlsx 文件转换为 JSON

    我正在尝试使用 SheetJS 读取 xlsx 文件并将其转换为 JSON 我能够读取简单的 没有合并单元格 xlsx 文件并将其转换为 JSON 但我无法正确处理合并单元格 问题是我有一个 xlsx 文件 其中包含不同语言的产品 我尝试在
  • MVC 嵌套视图和部分视图

    我正在使用 MVC 3 创建原型项目 我遇到了一种情况 我似乎无法找到答案 而且似乎我可能以错误的方式处理问题 我的项目的快速概述 它基于您通过 Visual Studio 获得的 MVC 模板 我使用提供的 Layout 视图上的链接 选
  • 使用 AMD 和 webpack 在浏览器中拉入 sinon 子模块

    我遇到了中描述的相同问题这个问题 https stackoverflow com questions 20570301 typeerror undefined is not a function evaluating sinon spy 基
  • 将方法传递给整个对象,还是传递该对象的属性,哪个性能更高?

    考虑以下示例 我需要检查 CouponModel 是否有唯一的序列号 我有两个选择 CouponModel model GetFromSomewhere if CouponHasUniqueKey model or if CouponHas
  • 如何判断Dart列表是否是固定列表?

    如何在运行时确定 Dart 中的列表是否是 固定列表 在 Dart 中 至少 有三种创建固定长度列表的方法 var fixed new List 5 fixed at five elements var alsoFixed new List
  • 在 WPF 中打开模式对话框时主窗口呈灰色

    当从主窗口打开模式对话框时 我想用灰色覆盖主窗口 WPF中有没有标准的解决方案来模拟这种效果 这里有一个例子 没有内置的功能 但它应该很容易实现 在主窗口中 您需要在顶层有一个没有定义的列或行的网格 因此它只是一个占据所有客户区域的单元格
  • 在文本字符串中查找特定术语并在上一列中返回该术语

    由于某种原因 我无法弄清楚第一个返回是否有效 但是当我向下拖动时 其他结果返回为 VALUE IF FIND Drummondville B3 gt 0 Drummondville IF FIND Saint Germain de gran
  • 检查设备是否可以使用 Cordova 解码视频

    我在用着VR view https developers google com vr concepts vrview在我的 Ionic Cordova 应用程序中 VR view 的文档指出 某些较旧的设备无法解码大于 1080p 1920
  • 设置 RStudio Portable 默认 R 版本

    我最近发现了 R 和 RStudio 的便携式版本 http rportable sourceforge net http rportable sourceforge net 开源岩石 无论如何 我在大学里从一台电脑跳到另一台电脑 我想让
  • 如何以 Rails 形式链接下拉菜单

    如何在 Rails 页面上链接下拉菜单 两个下拉列表都来自数据库 例如 如果第一个下拉列表是category 即将形成category桌子 第二次下降 products 也来自数据库 将根据第一个下拉菜单的选择进行填充 您可以使用 coll
  • SQL Server 中有类似“生存时间”的选项吗?

    SQL Server 中有类似 生存时间 的选项吗 最近我了解了Scylla DB中的Time to Live 我想知道跨数据库尤其是 SQL Server 是否可以使用相同的选项 我在 Internet 上搜索过 但找不到 SQL Ser
  • SQL对多个表建立索引,可以做到吗?

    一直在寻找解决方案一段时间了 转到 1 或 2 跳过描述 首先我会解释一下情况 我公司已经升级了我们的 erp 系统 我的主要工作是创建公司其他人使用的列表 我从该系统数据库中获取所有数据 在升级过程中 我们转换了一些数据以匹配新版本 其中
  • 什么是 MySQL 外键?

    在 Stack Overflow 的一个回答中 我看到了这段代码 CREATE TABLE Favorites user id INT NOT NULL movie id INT NOT NULL PRIMARY KEY user id m
  • Sql - SELECT 行,直到行的总和达到某个值

    我在这里看到了其他类似的问题 但它们并不能完全满足我的需求 至少我是这么认为的 我有一个包含以下列的 receipts 表 收据 客户ID 数量 让我们说 我有 5 张来自客户 1 的未付款收据 reciept id 1 Ammount 1
  • 如何链接到 boost date_time

    Example 我有一个 Rcpp 函数 我想调用它boost posix time time from string 我从以下位置获取了示例代码增强文档 https www boost org doc libs 1 65 0 doc ht
  • Java包循环检测:如何找到涉及的具体类? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您推荐什么工具来检测Java包循环依赖 知道目标是明确列出检测到的 跨包循环 中涉及的特定类 我知道关于
  • ASP.NET 中的基本表单身份验证有多安全?

    想象一下 您有一个只有 2 个页面的简单网站 login aspx 和 Secret aspx 仅使用 ASP net 表单身份验证和 login aspx 上的 ASP net 登录服务器控件来保护您的站点 详情如下所示 该站点配置为使用
  • 如何在mySQL中动态选择列名

    我想选择列名 但我事先不知道表结构 并且它可能会改变 所以我不能只用列名对 select 语句进行硬编码 我也不想选择每一列 有没有简单的方法可以做到这一点 我的想法是这两个查询的某种组合 但我的 SQL 不是那么好 SHOW COLUMN
  • 是什么导致我的参数超出范围异常? [复制]

    这个问题在这里已经有答案了 我试图测试我的列表是否正在从数据库收集数据 但是当我尝试获取消息框以从列表中打印邮政编码时 它给了我例外 System ArgumentOutOfRangeException 索引超出范围 必须为非负数且小于集合
  • Android 图像缓存 - 如何?

    我想以前已经问过很多次了 但仍然有些事情我不太明白 我尝试了两种不同的方法 将所有图像保留在内存中 当开始超过一定限制时 开始删除它们 让 Android 使用 SoftReferences 解决这个问题 2 有时 我分配它们时 它只是清理