所以我有一个GridView,每个项目都有一个TextView和一个ImageView。 ImageView的drawable正在被res / drawable文件夹解析。当我在我的getView()方法(在我的自定义适配器上)时,我只是根据位置添加每个drawable。 所以代码非常像:
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
我正在使用总尺寸为1.6M的12张图像(jpeg文件)
所以我根据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
无法帮助我减少字节分配?