【发布时间】:2011-10-29 19:21:10
【问题描述】:
我正在将 100 张图片从 Asset 文件夹加载到一个数组对象中。图片非常小(每个 png ~20k),我使用此代码对其进行处理,以防止内存泄漏和优化性能:
在循环中:
// create resized bitmap from asset resource
InputStream istr = assetManager.open(pics[i]);
Bitmap b = BitmapFactory.decodeStream(istr);
b = Bitmap.createScaledBitmap(b, 240, 240, true);
其中 pics[i] 是位于我的资产文件夹中的文件名列表。
代码对我有用,但我仍然不时收到来自用户的错误(我在开发者控制台错误中看到它):
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
at android.graphics.Bitmap.createBitmap(Bitmap.java:435)
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340)
有什么可以改进的吗?或者这是 Android 的世界,我们永远无法交付完美的应用程序?
【问题讨论】:
-
是的,这个问题非常棘手,我希望这个链接会有所帮助stackoverflow.com/questions/477572/…
标签: android image memory memory-leaks