在我的应用程序中,我从 url 获取 4-5 个位图,并像画廊一样使用它们。
如果我切换图像超过 6-10 次,我会收到此错误:
09-01 12:08:45.217: E/AndroidRuntime(350): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
09-01 12:08:45.217: E/AndroidRuntime(350): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
09-01 12:08:45.217: E/AndroidRuntime(350): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
09-01 12:08:45.217: E/AndroidRuntime(350): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:515)
这是我的代码:
try {
bitmapResult = BitmapFactory.decodeStream((InputStream)new URL(url[newPage+1]).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
v.setImageBitmap(bitmapResult);
我的问题是:
这只会在模拟器中发生吗?
更重要,更重要。如果使用drawable insted,我会更有效率吗?在这种情况下,我将使用下面的代码将我的位图转换为可绘制的,然后我将设置Imageresource。我必须“释放”任何东西吗?
Drawable d = new BitmapDrawable(getResources(),bitmapResult);