Bitmapを使っているときにOut of Memoryエラーが発生
(何回か実行しているうちに、Heapが足りなくなってエラー)
ネットであちこち探しまわったが、結局解決策はない。
bitmap.recyle();
bitmap = null;
をやってもだめ。
GCは当てにならないらしい。
System.gc();をやってもだめ。
結局、bitmapのサイズをできるだけ小さくするしかない。
Cameraを使っているなら、PictureSizeを小さくする。
params.setPictureSize(800,600);
画像ファイルを使うなら、縮小する
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2; // サイズ縮小
Bitmap bitmap = BitmapFactory.decodeFile(file,opts);
ManifestでHeapサイズを大きくする
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
(ただしこれはエラーの発生を遅らせるだけだが)
これ以外、現在打つ手なし。
Androidアプリ開発で今後も流用できそうなサンプルを中心に主に「自分のために」投稿しています。 細かい説明はしません。とりあえずご参考まで。 ただし自己責任でお使いください。 開発は ICONIA TAB A500(Andorid 3.1,)、Sony Tablet S(4.1)で行っています。
2012年8月28日火曜日
2012年8月21日火曜日
Bitmapの解放
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@407ed350
bitmap.recycle();を実行したとき、まだ使ってるから解放できない、というエラー
対策:onPauseでまとめて解放する。
@Override
public void onPause()
{
super.onPause();
//Bitmap解放
detect1.setImageBitmap(null);
bitmap.recycle();
bitmap = null;
}
bitmap.recycle();を実行したとき、まだ使ってるから解放できない、というエラー
対策:onPauseでまとめて解放する。
@Override
public void onPause()
{
super.onPause();
//Bitmap解放
detect1.setImageBitmap(null);
bitmap.recycle();
bitmap = null;
}
登録:
投稿 (Atom)