私には、メモリが漏れていることを誓っているアクティビティがあります。私が取り組んでいるアプリは画像がたくさんあるので、ビットマップを使って直接作業するときにはかなり記憶に執着しなければなりませんでした。私はアクティビティを追加しました。この新しいアクティビティを使用すると、基本的にmemの使用法が私を悩ませてしまい、 "Bitmap exceed VM budget"例外が発生します。このアクティビティを起動しないと、以前と同じようにすべてがスムーズです。Android - 画像リソースの背景を使用して動的にUIを構築するとメモリリークが発生する
私はメモリリークについて読んで始めました。私はAndroidのドキュメントの記事で説明されているのと同様の状況があると思います。私は、動的にたくさんのイメージビューを作成し、リソースからBackgroundDrawableを追加して、OnClickListenerも追加しています。アクティビティがライフサイクルでonPauseに当たったときにクリーンアップをしなければならないと思っていますが、何が正しいのかを具体的に知りたいと思います。ここで
は、私はこれは少し奇妙に聞こえるために起こっているが、私は上の任意のビットマップの操作をしたアプリケーションとのトラブルがあった...
LinearLayout templateContainer;
.
.
.
ImageView imgTemplatePreview = (ImageView) item.findViewById(R.id.imgTemplatePreview);
.
.
.
imgTemplatePreview.setBackgroundDrawable(getResources().getDrawable(previewId));
imgTemplatePreview.setOnClickListener(imgClick);
templateContainer.addView(item);
このトピックに関する他の情報はありませんでしたか?私はボタンをクリックした後に画像を反転する単一のビューで作業しています。アプリケーションを複数回再起動すると、unbind()メソッドが使用され、ビットマップサイズのためにOOMが残っているため、超過... –
うん...これは7ヶ月前に投稿されました。私はビットマップ、メモリ、OOMエラーなどについて理解していました。私のメールで私のプロフィールを見つけてください。私は喜んでコメントしています。糸。要するに、私が実際に限界を押しているときには、私のビットマップを管理するクラス(いくつかのケースでは、複数のクラス)を作成し、使用したらすべてのビットマップをリサイクルします。これは、あなたのアクティビティに単一のBitmapを保持し、それを新しいインスタンスに置き換える前に.recycleを呼び出すだけの単純なものになります。必要に応じて私を見つけてください。もっと議論して嬉しいです。 – Rich
こんにちは、私たちはすべて忙しいと分かり、知識を共有するのに時間がかかりますが、私もまだ2ヶ月目ですが、この7ヶ月間に何を集めているかについて、それは再発する質問のように本当に人気のある記事になります。私は優れたRomainの記事を読んだが、それはビットマップを扱うときにリークを引き起こす原因を知る必要があることを示唆しているに過ぎないようだ...リークを引き起こす.recycleとonClickコールバックはそこには言及されていなかった。 &大衆が見逃しているトリック。ありがとう、 – sradforth