Java 与使用drawables android相比,位图大小超出VM预算
在我的应用程序中,我从url获取4-5个位图,并像画廊一样使用它们 如果切换图像超过6-10次,则会出现以下错误:Java 与使用drawables android相比,位图大小超出VM预算,java,android,bitmap,drawable,Java,Android,Bitmap,Drawable,在我的应用程序中,我从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.nativeDecodeS
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);
我的问题是:
这只会发生在emulator中吗
更多,更重要。如果使用drawable insted,效率会更高吗?在这种情况下,我将使用下面的代码将位图转换为可绘制,并设置ImageResource。我必须“释放”任何东西吗
Drawable d = new BitmapDrawable(getResources(),bitmapResult);
从内部存储器加载位图时,请稍后回收位图
这里有很多线程都有VM内存不足的问题…那么位图和drawable呢?回答这个问题的线程a
BitmapDrawable
只是包装了一个位图
,因此它使用了相同的内存量。