小编Jef*_*eff的帖子

Android 2.2和2.3之间的内存使用情况

我正在开发一个包含许多图像的应用程序.我注意到我的应用程序的内存使用量在Android 2.3中比在Android 2.2中高得多 - 最终导致在加载位图时出现OutOfMemory错误.在研究这个时,我在第一个活动的onResume中记录了Debug.getNativeHeapAllocatedSize()的结果.在Android 2.2中,这输出5MB.在Android 2.3中,这输出17MB.

我创建了一个示例应用程序,试图进一步缩小范围.示例应用程序有2个活动:第一个有一个小图像和一个按钮来启动第二个活动; 第二个活动在ScrollView中有几个大图像.您可以在此处下载示例:http: //dl.dropbox.com/u/21709517/MemoryUsageExample.zip运行此示例时,Debug.getNativeHeapAllocatedSize()报告在2.2和2.3中启动第一个活动后分配的3MB.启动第二项活动后,Android 2.2仍然报告已分配3MB,而Android 2.3报告已分配17MB.运行"adb shell dumpsys meminfo test.example"会显示相同类型的结果.

为什么Android 2.2和2.3之间存在如此巨大的差异?更重要的是,我应该做些什么来防止在Android 2.3上使用如此多的内存?

----- -----更新

在查看了Romain Guy发布的信息之后,我决定更多地使用各种加载选项.结果显示,强制图像作为RGB_565加载确实减少了Android 2.3中的内存,但它仍然使用超过2.2.在我的示例应用程序中,Android 2.3现在使用10MB而不是Android 2.2使用3MB.此外,我尝试使用ARGB_8888强制32位.在这种情况下,Android 2.3使用17MB,但Android 2.2继续只使用3MB.更新的示例可以在这里找到:http: //dl.dropbox.com/u/21709517/MemoryUsageExample2.zip

造成这些差异的原因是什么?还有更多需要做的事情来使内存使用更接近Android 2.2吗?还有,有办法强制通过xml布局创建的图像为特定格式吗?这可以在应用程序范围内设置吗?谢谢.

-----更新2 -----

根据这个帖子,不可能强制通过xml膨胀加载的图像成为特定格式.

我仍然希望得到一个答案,为什么Android 2.2和Android 2.3强制16或32位后使用不同的内存量.

memory android

7
推荐指数
1
解决办法
3601
查看次数

标签 统计

android ×1

memory ×1