位图大小超过VM预算vs使用drawables android

时间:2012-09-01 12:23:19

标签: java android bitmap drawable

在我的应用程序中,我从网址中获取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);

我的问题是:

这只会在模拟器中发生吗?

Morevoer,更重要的是。如果使用drawable insted,我会更有效率吗?在这种情况下,我将我的位图转换为drawable与下面的代码,我将setImageresource。我必须“释放”任何东西吗?

Drawable d = new BitmapDrawable(getResources(),bitmapResult);

1 个答案:

答案 0 :(得分:0)

当您从内部存储加载位图时 - 之后回收位图!

这里有很多线程,问题是VM内存不足......