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);

私の質問はこれです:

これはエミュレーターでのみ発生しますか?

より多くの、そしてより重要な。ドローアブルインストを使用すると、より効率的になりますか?その場合、以下のコードを使用してビットマップを描画可能に変換し、setImageresourceを実行します。何かを「リリース」する必要がありますか?

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

1 に答える 1

0

内部ストレージからビットマップをロードする場合は、後でビットマップをリサイクルしてください。

このあたりには、問題のあるVMのメモリ不足のスレッドがたくさんあります...

于 2012-09-01T12:25:13.197 に答える