Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与使用drawables android相比,位图大小超出VM预算_Java_Android_Bitmap_Drawable - Fatal编程技术网

Java 与使用drawables android相比,位图大小超出VM预算

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

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

这只会发生在emulator中吗

更多,更重要。如果使用drawable insted,效率会更高吗?在这种情况下,我将使用下面的代码将位图转换为可绘制,并设置ImageResource。我必须“释放”任何东西吗

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

从内部存储器加载位图时,请稍后回收位图


这里有很多线程都有VM内存不足的问题…

那么位图和drawable呢?回答这个问题的线程a
BitmapDrawable
只是包装了一个
位图
,因此它使用了相同的内存量。