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

前端之家收集整理的这篇文章主要介绍了Android 2.2和2.3之间的内存使用情况前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个包含许多图像的应用程序.我注意到
我的应用程序的内存使用率在 Android 2.3中要高得多
在Android 2.2中 – 最终导致OutOfMemory错误
加载位图.在研究这个时,我记录了结果
Debug.getNativeHeapAllocatedSize()在第一个的onResume中
活动.在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 —–

根据this thread,不可能强制通过xml膨胀加载的图像是特定格式.

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

解决方法

Android 2.3现在默认加载32位图像.您可以使用BitmapFactory.Options强制16位格式.

http://www.curious-creature.org/2010/12/04/gingerbread-and-32-bits-windows/http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

原文链接:https://www.f2er.com/android/314584.html

猜你在找的Android相关文章