问题标签 [android-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在不启动该应用程序的情况下将应用程序加载到 RAM
我想将一组应用程序加载到 RAM 中,而不启动它们。当我将该应用程序加载到 RAM 中时,用户应该不知道它们。
我尝试使用以下代码:
上面的代码启动应用程序并将该应用程序置于前面。但我不希望将该应用程序放在首位。
android - Android - 活动完成()时位图会自动回收吗?
活动时位图会自动回收finish()
吗?
还是我们必须调用recycle()
位图onDestroy()
?
android - 本机堆不断增加
首先,我使用的是 API 10。
我有活动 A 和活动 B。
我从 A 启动活动 B。然后我在 B 的 oncreate() 中调用 finish()。然后我再次从 A 启动活动 B,依此类推。当我这样做时,我的本机堆每次都会增加约 0.5 MB。
这是我在活动 B 中拥有的唯一代码。
布局中的位图没有被回收吗?我不明白为什么我的本机堆大小会不断增加。
android - 在 View Pager 中优化图像
我有ViewPager
大约 10 页。所有页面的图像分辨率超过 1000x2000。对于不同的图像,基本上图像的宽度是不同的。因为我无法放置超过 2048 宽度的图像,所以我使用了 2 个图像(将一个图像分成 2 个图像)。所以每个页面都有 2 个图像和其他视图。
我尝试了许多优化方法,但可以优化很多。我尝试ImageView
将其设为 null 甚至将其位图设置为 null 甚至删除所有视图并使它们在销毁时为 null 并 优化 ViewPager中的位图
在这个我Asyntask
用来在屏幕上加载图像。甚至尝试将图像存储在缓存中。但仍然面临与内存相关的问题。
需要建议我如何优化更多并避免内存不足。
android - Android 新 Intent 内存泄漏/内存不足
我有一个包含 2 个活动的应用程序。第一个在启动时启动,并通过一个按钮使用 Intent 启动第二个活动。
在第二个活动中,我有一个相机和一些内存分配。
当我在第二个活动中按下“关闭”按钮时,我在相机上调用 Close 并完成活动。
当我第一次关闭活动并从第一个活动中调用它时,一切都很好,第二次也是如此 - 但是当我第三次打开它时 - 我在这一行出现内存不足错误:
我得到的错误是:
我可以找出为什么会发生这种情况。
有任何想法吗?
谢谢!
android - Android:使用 Bitmap.createBitmap 后内存泄漏
在阅读了很多相关帖子之后,我还没有找到解决这个问题的有效方法。当我的应用程序使用静态方法调整 Bitmap 对象的大小时Bitmap.createBitmap
,我认为它会泄漏内存。
我怀疑内存泄漏的方法:
BoardImage 类(部分):
使用调试器,在调用的行之后Bitmap.createBitmap
,我在 Logcat 收到此消息:
Grow heap (frag case) to 8.169MB for 1818612-byte allocation
当堆大小达到其限制(在我的 AVD 中设置为 32MB)时,程序会崩溃并出现OutOfMemory
异常。
如果需要更多代码,请告诉我,谢谢!
android-memory - 为什么Android不能分配1264字节?
Android ndk 应用程序中的一个经典错误(使用 ffmpeg 库):致命信号 11 (SIGSEGV)
我调试了:它在以下命令中退出:
sizeof(AVFormatContext) = 1264。设备是 Nexus 4。
所以我不相信这是因为尺寸大。必须先发生某些事情才能导致它。
实际上,类似的应用程序(没有音频流的早期版本)运行良好。新版本添加了音频流。所有 c++ 代码在纯 C++ 程序中运行良好。
我怀疑 Android 在遇到导致错误的命令之前设置了一个限制。请问有什么线索吗?
android - MAT中提到的大小和Android APP的缓存内存
我已经在 Eclipse 中运行了 MAT 来检查内存泄漏。我附上了以下报告。我可以看到大小为 11.1 MB。
- 我需要知道这是否是所有普通安卓手机的健康号码?
- 在手机中运行应用程序后,我在手机设置->应用程序->运行->显示缓存进程中检查了应用程序缓存内存。它显示为 20 MB。为什么会这样?当我们从APP出来时,通过编程方式删除缓存可以吗?
android - 与可绘制资源目录的配置有关的 Android 内存不足崩溃
原本一切都很好。我一直在使用 5 个可绘制目录
这是我最近创建一个新项目时由 eclipse adt-bundle 为我创建的。因此,当我需要一个新的位图时,我一直将位图的副本放入这 5 个目录中的每一个中。这对我来说总是有点奇怪,所以我很高兴通过阅读Android 文档提供资源发现我可以为所有常见的位图提供一个“可绘制”的单一目录。所以我切换到
原始 5 个目录中剩下的唯一文件是最初创建项目时为我创建的“ic_launcher.png”文件。
但是,可绘制目录的新配置严重失败。加载 36k 位图文件 frame.png,现在由于该行而发生内存不足错误
logcat 显示 Android 现在尝试分配一个 6790156 字节的内存块,结果该行(即 logcat 底部提到的 DrawOnTop.java:95 行)
谁能解释为什么会这样?更重要的是,该 frame.png 文件在我的代码中被缩放和拉伸,所以我真的不需要它的 5 个副本,所以有什么方法可以让我在一个“可绘制”目录中拥有所有常见的 png 位图,而无需这些类型的问题?
更新感谢@sam 的评论和@ken-wolf 的回答,我现在了解到,如果没有正确类型的位图,Android 会进行大量位图缩放。所以当我简单地在所有目录之间复制相同的位图时,我的新理解是这样做的效果是位图将被加载而不缩放。对我来说,在扩展过程中显然出了点问题,但是由于我正在自己进行扩展,所以我也不需要 Android 来做这件事。所以我现在认为重要的问题是:如何设置我的应用程序以便只提供每个位图的一个版本,并指示 Android 不要进行任何位图缩放。
android - 在 Android 上释放 ListView 的内存
我有一个带有扩展 ArrayAdapter 的自定义适配器的 ListView。ListView 中的每个项目都是一个 ImageView。
ListView 是一个大部分隐藏的菜单,但在启动时加载 - 它需要大量内存。
我希望它仅在显示时填充,并在隐藏时释放(这会影响性能,但我猜会释放内存)。
如何才能做到这一点?让 ListView 更好地使用内存的任何其他想法?
谢谢