0

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

1 回答 1

0

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

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

于 2012-09-01T12:25:13.197 回答