0

xml で ImageView に画像を読み込むと、より多くのメモリが必要ですか?

約7つの画像ビューを持つアクティビティがあります(Android携帯のアプリトレイと同じです)。

xml の各イメージビューのイメージを読み込んでいます。これにより OutOfMemoryError が発生しますか?

これらをリサイクルする方法はありますか?

4

3 に答える 3

1

drawableはい、画像を添付することは可能で、ImageView必要に応じて削除することができます。

imageview.setBackgroundResource(R.drawable.image);
                or    
imageview.setImageDrawable(drawable);

メモリ不足の問題は発生しません。ドキュメントへのリンク

于 2012-11-16T09:27:16.617 に答える
0

Android のメモリの問題に対処するためのいくつかのヒント:

1)。ローカル変数を使用して大きなデータ/ビットマップを特にループに格納しないでください。不要なオブジェクトが作成されるためです。このような状況では、クラス/インスタンス変数を好みます。必要でない限り、データを保持しないようにしてください。

2)。可能な限り View.findViewById(..) の呼び出しを行わないようにします。Romain Guy は、Google I/O 2010で、このメソッドはコストがかかる (実行に数 KB のメモリを必要とする) ことを明確に述べているため、ViewHolder を使用するのと同じように、このメソッドをスマートに呼び出すと、メモリの消費量が少なくなります。

3) String プールを効果的に使用し、文字列の重い操作を行う場合は StringBuilder/StringBuffer を使用します。StringBuffer は同期され、StringBuilder と比較してコストがかかるため、いつ StringBuffer を使用する必要があるかを認識しておいてください。

于 2012-11-16T10:05:47.290 に答える
0

画像をロードしているときにこの問題が発生しました。このエラーは、Android エミュレーターでのみ表示される場合があり、モバイル デバイスでもアプリがクラッシュする場合があります。

次の2つの手順でこの問題を解決しました。

  1. 解像度が高すぎる場合は、画像のサイズを変更します。

  2. 同時に開いている画像オブジェクトが多すぎない。

    イメージ オブジェクトが不要になったときに NULL を割り当てることで、ガベージ コレクターを助けることもできます。

必要でない限り、同時にあまりにも多くの画像を開かないようにします。

サイズを変更する必要がある要因は、画像の実際のサイズによって異なります。

于 2012-11-16T09:24:54.880 に答える