位图图像内存不足

2023-11-27

我知道有很多关于 android 位图图像内存不足的讨论,但我想知道是否有人可以向我解释一下。

目前在我的应用程序中,我有一个列出图像缩略图(低质量)的活动,当我单击图像时,它会打开一个新活动来全屏查看图像。在我的第二次活动课中,我有:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
bm = BitmapFactory.decodeFile(myImagePath, options);

然后我将其放入 ImageView 中以显示它。这可以正常工作并显示我的图像的全部质量。但是,如果我单击返回,然后再次单击查看该图像(并重复 6 次).. 在第 6 次打开图像(activity2)时,我收到内存不足错误,提示“堆大小=6919KB,已分配=3125KB,位图”大小 = 25848KB!

位图尺寸怎么这么大?我假设它可能一直在创建新实例,所以我决定在按下后退键时在我的第二个活动中放置一个方法。在这个方法中,我设置了我的 bitmap=null 并执行了 System.gc()清除垃圾收集器但这并没有解决问题。我在第六次单击缩略图以全分辨率查看图像时仍然出现内存不足错误

谁能解释为什么?谢谢


android 有一些很棒的信息详细解释了这一切,以及如何克服这个问题here.

每个像素为 4 字节。 600 万像素 = 24MB

一张照片可以用完所有内存。

位图占用大量内存,尤其是对于照片等丰富的图像。例如,Galaxy Nexus 上的相机可拍摄高达 2592x1936 像素(5 兆像素)的照片。如果使用的位图配置是 ARGB_8888(从 Android 2.3 开始的默认值),则将此图像加载到内存中大约需要 19MB 内存(2592*1936*4 字节),立即耗尽某些设备上每个应用程序的限制。

我再次向你指出这一点很棒的链接我从另一个 SO Question 中发现,其中包含如何正确解决问题的教程。

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

位图图像内存不足 的相关文章

随机推荐

  • 布尔运算符与按位运算符

    我很困惑何时应该使用布尔运算符和按位运算符 and vs or vs 有人可以告诉我何时使用其中一种以及何时使用其中一种会影响我的结果吗 以下是一些指导原则 布尔运算符通常用于boolean值 但通常使用按位运算符integer value
  • 如何在windowmanager中添加tinymce列表框值

    我打开一个窗口管理器并添加一个文本字段和列表框 editor windowManager open title Insert caption body type textbox name text label text multiline
  • iPhone 在运行时创建 SQLite 数据库?

    我发现的大多数 sqlite 示例都讨论首先从命令行创建 db 文件 然后将其添加到您的应用程序中 对于我的项目 我希望能够在应用程序第一次启动时创建数据库 然后将其保存到用户沙箱中的数据库文件中 有没有办法做到这一点 您可以在应用程序启动
  • Angularjs 在应用程序启动时启动 http 请求的合适时机

    我两天前刚刚开始学习 Angularjs 一个问题困扰了我两天 我需要在应用程序启动时向服务器发出 http 请求以获取一些数据 但我找不到合适的时机来执行此操作 我试过做一个controller 这称为 http get 但这不起作用 如
  • 如何从存储过程返回多行? (Oracle PL/SQL)

    我想创建一个带有一个参数的存储过程 它将根据参数返回不同的记录集 有什么方法可以做到这一点 我可以从普通 SQL 中调用它吗 以下是如何构建一个返回结果集的函数 该结果集可以像表一样进行查询 SQL gt create type emp o
  • 微软语音识别平台

    我使用 System Speech 用 C 编写了一个用于语音识别的应用程序 该应用程序在 Windows 7 上运行良好 不过 我正在创建可在 Windows 2003 x86 上运行的相同应用程序 我的编程环境 Windows 7 x6
  • Django 如何将 npm 模块与静态/模板一起使用

    我最近添加了npm添加到我的项目中 以便更好地跟踪我的 js 依赖项 以前我刚刚 git 克隆到我的 static vendor 文件夹 我还添加了gulp 但现在只让它做 hello world 的事情 它看起来很简单 它可以监视文件 缩
  • 有没有办法使用 Python 访问 OS X wi-fi 数据? (例如信号强度)

    我只是好奇是否可以使用任何 Python 工具来轮询 OS X 中的 Wi Fi 信号强度 我的大多数搜索都只是生成适用于 Linux 的 Python 工具 但没有找到适用于 OS X 的 Python 工具 如果没有 是否有其他方法可以
  • 使用 AdMob 展示我自己的广告?

    我已将 AdMob 集成到我的应用程序中 是否可以使用 Admob 展示我自己的广告 如果没有 那么最好的选择是什么 是的 Ad Mob 允许您选择使用 自家广告活动 选项 话虽这么说 如果通过 使用 Admob 展示我自己的广告 你的意思
  • 在 C++ 中实现模拟非确定性有限自动机的代码

    我正在做自动机理论的作业 我必须确定确定性有限自动机的转换函数是否接受一个单词 我有这个输入文件 6 8 0 2 2 5 0 0 a 0 1 a 1 1 b 1 2 c 1 3 c 3 4 d 4 4 d 4 5 d 3 aaabcccc
  • SQL注入无法正常工作

    我正在尝试在我的本地主机上为安全测试项目创建的虚拟网站上执行 SQL 注入 我尝试输入字符串 OR 进入用户名和密码字段 这样它应该绕过它并显示登录正确 但相反它显示登录失败 任何有助于理解为什么 SQL 注入不起作用的帮助
  • 如何通过react js中的map方法仅访问一项

    我的问题可能不清楚 但这是我的问题 这是我使用 map 方法从数组中获取的卡片 并在每张卡片上显示每个项目 我已经触发了 编辑 按钮 以便它显示隐藏的文本 只想在一张卡片中看到它 但是 当我仅单击一张卡片时 所有卡片都会显示该隐藏消息 你能
  • CakePHP 2.x:Model::afterFind() 上的 $primary 标志实际上有用吗?

    CakePHP 的Model afterFind 回调看起来像 afterFind array results boolean primary false 根据文档 The primary参数指示当前模型是否是查询发起的模型 或者该模型是否
  • javascript数组映射方法中的Break语句[重复]

    这个问题在这里已经有答案了 可能的重复 如何像调用break一样短路Array forEach 有没有办法让我在满足条件后可以突破数组映射方法 我尝试了以下抛出 Illegal Break Statement Error 这是我随机想到的一
  • getSubscription 返回空订阅

    我是 Service Worker 和 GAE 的新手 我能够注册 Service Worker 但无法订阅 PushManager 出现订阅 null 错误 找到下面的代码以供参考 serviceWorkerRegistration pu
  • PHP 在 html 页面中显示 html 电子邮件

    我正在构建一个 PHP 电子邮件邮箱脚本 我如何使 html 电子邮件像 gmail hotmail 中那样清晰地显示 如果我只是回显它 它会影响整个页面布局 我可以使用 iframe 但这肯定不是最好的解决方案 如果您正在寻找 最佳解决方
  • 字符串太长时会被截断

    我试图从我们的服务器获取 JSON 响应 当字符串长度达到大约 5525 个字符时 响应字符串似乎总是被截断 HttpClient httpClient new DefaultHttpClient HttpPost post new Htt
  • 获取PDFBox中字符的字体高度

    PDFBox的字体类PDFont中有一个方法 名为getFontHeight 听起来很简单 但是我不太理解文档以及参数代表什么 getFontHeight这将获取字符的字体宽度 参数 c 要获取宽度的字符代码 offset 数组的偏移量 长
  • 在 Python 3 中迭代单个字节

    当迭代一个bytesPython 3 中的对象 获取个体bytes as ints gt gt gt b for b in b 123 49 50 51 如何获得 1 长度bytes对象代替 以下是可能的 但对读者来说不是很明显 并且很可能
  • 位图图像内存不足

    我知道有很多关于 android 位图图像内存不足的讨论 但我想知道是否有人可以向我解释一下 目前在我的应用程序中 我有一个列出图像缩略图 低质量 的活动 当我单击图像时 它会打开一个新活动来全屏查看图像 在我的第二次活动课中 我有 Bit