安卓。内存不足问题

2024-03-02

我需要在我的应用程序中显示许多图像。这些是 jpg 和 png,我将它们加载到 ImageView 中,如下所示:

tile.setImageResource(R.drawable.tile_highlight);

我目前遇到内存不足问题(java.lang.OutOfMemoryError: bitmap size exceeds VM budget)

我搜索并找到了一些其他帖子,他们都建议您应该手动回收 ImageView 的位图,如下所示:((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();这将从内存中转储它。

但就我而言,我没有使用setBitmap()将图像加载到 ImageView 对象上,当我尝试运行上面的代码时,它返回NullPointerException,更准确地说,该方法getBitmap()返回null,没有位图?!?!

我是否需要返回代码并更改加载 ImageView 中所有图像的方式,然后尝试使用recycle()方法?或者我怎样才能释放内存,这样它就不会再崩溃了?

EDIT

我尝试过这样的事情:imageView.setImageResource(-1);希望它能从内存中删除图像并将其替换为... null 或其他内容,但似乎这对解决问题没有帮助。


如果您可以发布一些代码,将会很有帮助。具体来说,您如何设置ImageView对象。如果您不使用位图,我希望getBitmap()将返回 null。但是,如果您使用另一种Drawable或者以其他方式设置图像,可能会采取类似的路线,但不涉及位图。

EDIT:

好吧,试一试。您可以创建一个Bitmap来自这样的资源:

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);

然后,像这样使用位图,考虑到 img 是你的ImageView:

img.setImageBitmap(bm);
//Do some stuff with it, then when memory gets low:
((BitmapDrawable)img.getDrawable()).getBitmap().recycle();

当然,这是考虑到您正在参加一项活动。如果没有,您将必须获取上下文的句柄并替换getResources() with context.getResources().

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

安卓。内存不足问题 的相关文章

随机推荐

  • 在模板中表达左移或右移的优雅方式

    我目前有一个模板函数 根据其模板参数 A 和 B 可以向左或向右移动值 template
  • 以编程方式设置 MailItem 的后续标志来完成?

    我试图找出如何在 Outlook 2007 中通过 VBA 将 MailItem 的后续标志设置为完成 谷歌搜索返回了大量在 Outlook 2003 及之前版本中有效的方法 例如 更改 MailItem 的 FlagStatus 属性的值
  • 如何处理静态存储持续时间警告?

    我是一个试图从书本上学习 C 的新手 下面的代码可以正常工作并产生预期的输出 但是定义的两行有警告engine and randomInt 使用静态存储持续时间初始化 引擎 可能会引发无法捕获的异常 如果我将第 7 行和第 8 行放在mai
  • .NET 错误关闭串口 BaseStream 错误仅在端口打开时出现

    我正在使用 NET System IO Ports SerialPort 并按照本文中的建议使用 BaseStreamIf you must使用 NET System IO Ports SerialPort http www sparxen
  • 对角块矩阵行之间的组合列表

    我有以下 R 矩阵 它是 2x3 和 3x3 子矩阵的组合 它可以是 2 个以上具有不同维度的子矩阵 例如 m1xp 和 m2xp 和 m3xp 其中 m1 m2 m3 A2 lt list rbind c 1 1 1 c 1 1 1 rb
  • 曲面细分的理论和算法

    我有以下问题 以下是我在屏幕上绘制立方体的方法 void drawCube glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT Clear color and depth buffers glPu
  • A* 寻路不采用最短路径

    我的 A 寻路功能总是能到达预期目的地 但它几乎总是有点偏离路线 这是一个例子 我制作了一张漂亮的图片来展示我的问题 但显然直到我的声誉达到 10 后它才会发布 抱歉 我是新人 P 本质上 它会尽可能向左或向上拉动 而不实际向路径添加更多图
  • ggplot:如何用箭头连接图表中的某些条形

    目前我正在复制 更新海报演示的某些图形 我成功地复制了图形的颜色 值 条形样式和背景 但是缺少一个箭头标签 突出显示了值差异 我想知道是否有通过 ggplot 线条或箭头 的有用选项 值得付出努力 或者我必须用另一个图形软件绘制一些箭头 这
  • 到凸包的距离

    我一直在寻找一种方法来计算到凸包 多边形的距离 如果该点在包内 则距离为正 如果在包外 则距离为负 例如 给定一个船体和一组点 可以计算正 负距离吗 from scipy spatial import ConvexHull import m
  • 如何将 Solr 索引转储/备份到文件?

    我正在运行一个虚拟专用服务器 每天午夜 所有文件都会自动备份由 VPS 提供商提供 所以我需要exportSolr 索引到文件 这样如果有一天出现问题 我将能够import它轻松返回到 Solr 我怎样才能做到这一点 Solr 数据库是一个
  • 使用 QLabel 在 PyQt GUI 中显示 gif

    我试图在按下按钮后显示加载 gif 这是我目前拥有的代码 import sys from PyQt4 import QtGui QtCore from PyQt4 QtCore import from PyQt4 QtGui import
  • 子进程 check_output 返回非零退出状态 1

    这是我的Python代码 import subprocess subprocess check output ls shell True stderr subprocess STDOUT import subprocess subproce
  • 如何知道文字的方向?

    在 UITextView 中输入时 我需要根据键盘的语言了解文本的方向 例如 如果用户输入英语 则方向将为 从左到右 如果用户输入阿拉伯语 则方向将为 从右到左 我毫无疑问地需要这个值 并避免对每种语言及其文本方向之间的匹配进行硬编码 这可
  • LESSCHARSET=utf-8 less 似乎不起作用

    我正在尝试查看 UTF 8 文本文件 流less 即使我像这样调用它 cat file LESSCHARSET utf 8 less 非 ASCII 兼容的 UTF 8 字符无法正确显示 相反 它们的十六进制值在括号中突出显示 例如
  • Java 构建路径 - 添加外部 JAR 并添加变量

    Java 构建路径 添加外部 JAR 按钮和添加变量按钮功能之间有什么区别 为什么需要它 请详细解释一下 两者都可以用来实现相同的目标 将 JAR 添加到构建路径中 假设您有一个项目 P1 想要使用供应商 S1 安装的 JAR 该 JAR
  • Java 8 过滤器映射 >

    如何过滤一个Map
  • iPhone 上的 CoreMotion 碰撞与震动

    我正在尝试检测用户何时将 iPhone 撞到另一个物体上 以及何时只是摇晃手机 我似乎无法让它按照我想要的方式完美工作 因为它要么记录太多颠簸 要么没有颠簸 或者认为摇晃就是颠簸 有人可以看看我下面的代码并提供建议吗 我需要确保其中之一发生
  • 当由 router-outlet 创建组件时,如何为组件设置输入绑定?

    当路由器创建组件时 如何设置属性绑定 不支持对路由器添加的组件使用绑定 另请参阅此讨论https github com angular angular issues 4452 https github com angular angular
  • TypeORM:PostgreSQL 中自动生成的 UUID

    我正在编写一个 REST API 对于数据访问 我正在使用 typeorm 我已经成功使用了它 但我希望在我的一个表上有一个 UUID 自动生成的主键 有谁知道如何在 typeorm 中设置 UUID 类型并自动生成的列 我尝试了以下操作
  • 安卓。内存不足问题

    我需要在我的应用程序中显示许多图像 这些是 jpg 和 png 我将它们加载到 ImageView 中 如下所示 tile setImageResource R drawable tile highlight 我目前遇到内存不足问题 jav