我正在从资源文件夹中加载100张图片到一个数组对象中。这些图片非常小(每个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]是一个包含在我的Asset文件夹中的文件名列表。
这段代码对我来说是有效的,但我仍然会不时地收到用户的错误报告(我可以在开发者控制台错误中看到):
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)
有什么办法可以改善它吗?还是说这是安卓的世界,我们永远无法交付完美的应用程序?