【发布时间】:2014-04-16 08:41:33
【问题描述】:
所以我有一个 GridView,每个项目都有一个 TextView 和一个 ImageView。图像视图的可绘制对象正在由 res/drawable 文件夹解析。当我使用 getView() 方法(在我的自定义适配器上)时,我只是根据位置添加每个可绘制对象。 所以代码很像:
imageView.setImageResource(mThumbIds[position]);
这给了我一些 Grow Heap (frag case) 之类的:
Grow heap (frag case) to 13.800MB for 1166416-byte allocation
Grow heap (frag case) to 15.834MB for 1128016-byte allocation
Grow heap (frag case) to 17.829MB for 453616-byte allocation
我使用了 12 张图片(jpeg 文件),总大小为 1.6M
所以我根据 d.android.com 上的 load bitmap 文章更改了我的代码。 calculateInSampleSize 根据 jpeg 的大小,我得到了 1,2 或 4 的因子。 将这些值设置为 options.inSampleSize 我认为这足以减少我的堆大小,但我在我的 logcat 上收到了相同的 Grow Heap 消息!
也尝试了 inPurgeable 选项,但也没有用。
我仍然得到的是:
Grow heap (frag case) to 13.958MB for 1166416-byte allocation
Grow heap (frag case) to 15.834MB for 1128016-byte allocation
对此有何建议?我做错了什么?为什么options.inSampleSize 不能帮助我减少字节分配?
【问题讨论】: