私のアプリでは、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);