2010/10/8 Lisa <lpk...@gmail.com>:
> java.lang.OutOfMemoryError: bitmap size exceeds VM budget
1. Bitmapが解放されていない
2. Bitmapが大きすぎて、メモリに入らない
の2つの原因が考えられますが、後者だとしたら、
decodeFile(String pathName, BitmapFactory.Options opts)
のopts.inSampleSizeを指定して、間引いてはいかがでしょう?
--
Hiroshi SAKURAI
2010/10/8 Lisa <lpk...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
を
if (imageB != null) {
imageB.recycle();
imageB = null;
}
imageB = BitmapFactory.decodeFile("sdcard/img.png");
imgV.setImageBitmap(imageB);
とするとうまくいくと思います。
新しいイメージを用意する前に、以前のイメージを破棄する感じです。
2010年10月8日18:03 Lisa <lpk...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
--
====================
Narumi NAGAI
narumi...@gmail.com
====================
とりあえず
(対策1)
//ARGB_8888,RGB_565,ARGB_4444
Bitmap newBitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.RGB_565);
Config.RGB_565で半分の消費になります。
(対策2)
OptionsのinJustDecodeBoundsをtrueにして読み込み先にサイズを取得する
サイズを調整して読み込む
参考:
http://d.hatena.ne.jp/hdk_embedded/20100518/1274121081
http://www.hoge256.net/2009/08/432.html
2010年10月12日20:11 Lisa <lpk...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
--
以上、宜しくお願いします。
飯塚 康至
このコードで小さくなりますので、試して下さい。
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inSampleSize=4;
imageB = BitmapFactory.decodeFile("sdcard/img.png", opt);
sent from Xperia
灘校パソコン研究部-Nada Personal Computer users' Association
Naoya Niwa
MyBlog Mine's Blog: http://mines-blogn.blogspot.com/
Site http://mines.dip.jp/
Twitter: @mine_studio
http://twitter.com/mine_studio
2010/10/14 17:26 "Nobuo Kitagawa" <nob....@gmail.com>:
北川@comictribes.comです。
やはりリーク系の問題のように思います。
ParentacrivityのonPause でmediaplayer をnullにしてみては
いかがでしょうか。
On 10月14日, 午後4:12, Lisa <lpk...@gmail.com> wrote:
> ohisamaさん、ご回答有難うございます。
>
> 画像は小さくなりますが、エラーは無くなり...
> http://developer.android.com/resources/articles/avoiding-memory-leaks...
>
> 私のcodeは以下です。
>
> //-------------------------------------------------------------
> public class ...
すいません。
操作ミスでからのメール送ってしまいました。
sent from Xperia
灘校パソコン研究部-Nada Personal Computer users' Association
Naoya Niwa
MyBlog Mine's Blog: http://mines-blogn.blogspot.com/
Site http://mines.dip.jp/
Twitter: @mine_studio
http://twitter.com/mine_studio
2010/10/14 17:26 "Nobuo Kitagawa" <nob....@gmail.com>:
>
> 北川@comictribes.comです。
>
> やはりリーク系の問題のように思います。
> ParentacrivityのonPause でmediaplayer をnullにしてみては...
経緯がよくわかっていませんので、StackTraceとソースコードから推測しますが、
stackTraceに以下のログが出ていますので、
今回は、「解放済」のBitmapにアクセスしているようです。
別のところで、Canvasにアクセスしていませんか?
もし、Canvasに関する処理がある場合は、描画を回避するように
してみてはいかがでしょうか?
ちなみに、、、recycle済みかどうかは、
Bitmap#isRecycled()で判定可能です。
> java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
> android.graphics.Bitmap@437d8e60
よろしくお願いいたします。
2010年10月14日20:52 Lisa <lpk...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
--
Takashi Yokoyama
Chugoku GTUG Manager
意見です。
このコードの断片見ると、インターフェスとかクラス使って
ますし、webviewにmediaplayer使ってますが、
その辺、切り離したコードでテストしてから、組み合わせる
のが、妥当かと。
自分、クラス嫌いですから。
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
れ
> ています。
> > このグループに投稿するには、android-g...@googlegroups.com にメー
ル
> を送信してください。
> > このグループから退会するには、
> android-group-j...@googlegroups.com にメールを送信してくださ
い
> 。
> > 詳細については、
http://groups.google.com/group/android-group-japan?hl=ja からこのグループに
アクセスしてください。
>
>
--
Takashi Yokoyama
Chugoku GTUG Manager
tksyo...@gmail.com
http://sites.google.com/site/chugokugtug/
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られて
います。
このグループに投稿するには、android-g...@googlegroups.com にメールを
--
>10-18 01:44:21.619: ERROR/dalvikvm-heap(872): 506844-byte external
allocation too large for this process.
たぶんリークしているのはビットマップではなく、Activityのインスタンスだと思います。
以下のコードを、Activityクラスに追加してみてください。
======== ここから ========
@Override
protected void onDestroy() {
super.onDestroy();
cleanupView(findViewById(R.id.root));
// ^^^^^^^^^^
ここはアクティビティのトップレベルレイアウトのIDを指定してください。
}
/**
* 指定したビュー階層内のドローワブルをクリアする。
* (ドローワブルをのコールバックメソッドによるアクティビティのリークを防ぐため)
* @param view
*/
public static final void cleanupView(View view) {
if(view instanceof ImageButton) {
ImageButton ib = (ImageButton)view;
ib.setImageDrawable(null);
} else if(view instanceof ImageView) {
ImageView iv = (ImageView)view;
iv.setImageDrawable(null);
} else if(view instanceof SeekBar) {
SeekBar sb = (SeekBar)view;
sb.setProgressDrawable(null);
sb.setThumb(null);
// } else if(view instanceof( xxxx )) { -- 他にもDrawable
を使用するUIコンポーネントがあれば追加
}
view.setBackgroundDrawable(null);
if(view instanceof ViewGroup) {
ViewGroup vg = (ViewGroup)view;
int size = vg.getChildCount();
for(int i = 0; i < size; i++) {
cleanupView(vg.getChildAt(i));
}
}
}
======== ここまで ========
2010年10月18日13:19 Lisa <lpk...@gmail.com>: