0

簡単な質問をさせていただきたいと思います。java.lang.outofmemory エラーと戦っています。おそらく写真が原因ですが、プロジェクトには現時点で未使用のインポートと未使用の変数がかなりあります(7つのアクティビティと約40の変数を持つすべてのアクティビティを持つアプリケーション)。

未使用のインポートと未使用の宣言された変数のメモリを取得しますか? 多くの変数とインポートが原因で java.lang.outofmemory エラーが発生する可能性があると思いますか?

4

2 に答える 2

2

アンドロイドから:

ビットマップは、特に写真のようなリッチ イメージの場合、大量のメモリを消費します。たとえば、Galaxy Nexus のカメラは、最大 2592x1936 ピクセル (5 メガピクセル) の写真を撮影します。使用されるビットマップ構成が ARGB_8888 (Android 2.3 以降のデフォルト) である場合、このイメージをメモリにロードすると、約 19MB のメモリ (2592*1936*4 バイト) が必要になり、一部のデバイスではアプリごとの制限をすぐに使い果たします。

基本的に、画像は適切に使用しないと致命的です。

大きなビットマップの効率的な読み込みに関するこの Android チュートリアルを参照してください。

具体的には、必要な解像度で、ファイル/リソースからスケーリングされたビットマップをロードするためのコード例です。

インポートは、実行時にメモリに影響を与えません。彼らができる唯一のことは、ビルド時間を遅くすることです。何も有害ではありません。

于 2012-12-18T16:23:20.980 に答える
0

いいえ、変数Heapはアプリケーションでより多くのメモリを占有しません。これはbitmap、アプリケーションが原因である可能性があります。エラーが発生した場合は、次のような背景の画像をリリースしていることを確認してください

imageview.setBackgroundDrawable(null);
relativeLayout.setBackgroundDrawable(null);

また

imageview.setBitmapImage(null);

これにより、レイアウトで使用されている描画可能な画像が削除されます。

于 2012-12-18T16:00:29.863 に答える