我是所有内存管理主题的新手,所以有很多东西我不明白。
我正在尝试在我的应用程序中缓存图像,但我遇到了内存消耗问题:
所有的 Bitmap Chaching 代码都是从这里复制粘贴的:http: //developer.android.com/training/displaying-bitmaps/index.html
我在eclipse的DDMS视图中调试了代码并检查了堆大小,在这些代码行之后有大约15mb的跳转:
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
在“decodeSampledBitmapFromResource”方法中。
图片为 1024x800, 75kb jpg 文件。根据我在网上看到的,这张图片应该占用的内存量大约是 1024*800*4(Bytes per pixel)=3.125mb
关于这个主题的所有线程都没有说明为什么它占用的内存比它应该的多得多。有没有办法用合理的内存缓存一张图像?
编辑
我尝试使用下面@ArshadParwez 的答案中建议的 decodeFile 方法。使用这种方法,在 BitmapFactory.decodeStream 方法之后,内存只增加了 3.5mb - 问题解决了,有点,但我想直接从资源中缓存位图。
我注意到在 decodeResource 方法期间有 2 次内存“跳跃”——其中一次约为 3.5mb——这是合理的,另一次奇怪的是 14mb。那些 14mb 是用来做什么的,为什么会这样?