gpt4 book ai didi

android - 使用已完成的 Activity 和低 kb 图像获取 OutofMemoryError/InvocationTargetException?

转载 作者:太空狗 更新时间:2023-10-29 12:45:21 25 4
gpt4 key购买 nike

基本上我的应用程序总是崩溃。但是,我所有的 Activity 都有“finish();”,这应该结束 Activity 并释放内存(至少这是我的理解)。同样,如果以 PNG 格式保存,我的图像只有几百 KB。

至少我的代码在 Java 包资源管理器中没有即时错误。在 DDMS 中,我得到了标题中列出的错误。按照此处的问题和答案,我遵循了我的项目最合乎逻辑的步骤,但它没有奏效。到目前为止,我已经检查了图像大小(这是低文件大小)并且我已经添加了 finish();到我的 Activity 。

基本上,我在其中进行了大约 10 个 Activity ,但它崩溃了。我总共有大约 60 个 Activity ,每个 Activity 都有一个图像、图像按钮和一个滚动 TextView 。有些人偶尔会在屏幕上看到暂停并继续进行下一个 Activity 的图像。我会发布代码,但没有一页代码是直接相关的——或者至少我可以解析。

至于 AVD,它只是一个带有低 SD 卡内存的中档,然而,即使在中高档的真实设备上,该应用程序也存在同样的问题。

感谢任何帮助!

最佳答案

我经常看到这种行为很安静,首先让我告诉你,完成一个 Activity 并不一定意味着操作系统会释放资源,操作系统足够聪明,可以留下一些资源,以防你可能决定再次打开该 Activity,即使您之前已销毁它,现在随着您打开更多 Activity,操作系统可能会决定完全释放之前“已销毁”Activity 的一些资源,因为它可能需要这些资源用于最新的 Activity。

关于您的内存问题,我几乎可以肯定它与图像大小调整机制有关,即使您的应用程序的图像只有几 KB,如果没有存储在适当的可绘制文件夹中,这些图像也可能变成几 MB ,因为操作系统将尝试使用以下公式调整这些图像的大小以适合您的 Activity :ImageWidth * ImageHeight * 4Bytes,对于 Alpha/R/G/B 为 1Byte,并且在 DDMS 中通过跟踪 Heap 您可以注意到何时你去一个 Activity ,堆增加得非常快。

为了确保问题与调整大小机制无关,请将所有可绘制对象放在名为:drawable-nodpi 的文件夹中(这样您就可以告诉操作系统不要调整大小),如果您发现性能存在巨大差异那么这意味着问题是您的 drawables 没有根据每个屏幕密度正确设计尺寸......

希望这对您有所帮助。

问候!

关于android - 使用已完成的 Activity 和低 kb 图像获取 OutofMemoryError/InvocationTargetException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com