Android Cookie

Android 安卓是最开放的手机操作系统,谷歌安卓APP开发和安卓市场的相关话题

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

我正在开发一个包含许多图像的应用程序。 我注意到,我的应用程序的内存使用情况在Android 2.3比在Android 2.2更高 – 最终在加载位图时导致OutOfMemory错误。 在研究这个时,我在第一个activity的onResume中logging了Debug.getNativeHeapAllocatedSize()的结果。 在Android 2.2中,输出5MB。 在Android 2.3中,这输出17MB。 我创build了一个示例应用程序来尝试进一步缩小范围。 示例应用程序有两个活动:第一个有一个小图像和一个button来启动第二个活动; 第二个活动在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”显示相同types的结果。 为什么Android 2.2和2.3之间有如此巨大的差异? 更重要的是,我应该怎样做才能避免在Android 2.3上使用这么多的内存? —– —–更新 在查看Romain Guy发布的信息之后,我决定做更多的玩各种加载选项。 结果显示,强制图像加载为RGB_565确实减less了Android 2.3中的内存,但仍然使用了2.2以上。 在我的示例应用中,Android 2.3现在使用10MB,使用3MB的Android 2.2。 此外,我试图通过使用ARGB_8888强制32位。 在这种情况下,Android 2.3使用17MB,但Android 2.2继续使用3MB。 更新的示例可以在这里find: http : //dl.dropbox.com/u/21709517/MemoryUsageExample2.zip 造成这些差异的原因是什么? 是否有更多的需要做的内存使用更接近于Android 2.2? 另外,有没有办法强制通过XML布局创build的图像成为一种特定的格式? 这可以在应用程序范围内设置吗? 谢谢。 —– UPDATE 2 […]