0

ImageAdapter で「メモリ不足」エラーが発生しました。ImageView を再利用していくつかの解決策を試しましたが、うまくいきませんでした。

@Override
public View getView(int position, View convertView, ViewGroup parent) {         
    ImageView imageView;
    if (convertView == null) { 
        imageView = new ImageView(mContext);//Creamos la imagen sólo si no existe
    } else {
        imageView = (ImageView) convertView;//Sino reusamos el objeto
    }

    //Todas con el mismo ancho
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(70, 70));

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

私は似たようなアプリをいくつか持っていますが、この問題はありません。確かにこれには290の異なる画像があり、他のアプリには1つしかありません:)、convertView == nullがoutOfMemoryの問題を修正すると思いました

詳細情報: - 100kb を超える画像は 20 個のみで、そのうち 500kb 以上で 900kb 以下の画像は 3 つだけです。

PD: このチュートリアル コードを使用しています: http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/

助けてくれてありがとう、私の英語でごめんなさい

4

1 に答える 1

0

Android プログラムはほとんどのプログラムよりもはるかに複雑で、画像はディスク上よりも RAM 内でかなり多くのメモリを消費するようです。とはいえ、簡単にできることが 1 つあります。他にもいくつかのヒントがあります。

  1. マニフェストのアプリケーション タグに追加android:largeHeap="true"します。
  2. ある種のメモリ プロファイラーを実行して、リークを探します。
  3. 未使用の変数を削除します。
  4. クラス間で一貫して使用される場合は、一部の変数を静的にします。
  5. 正しいサイズの画像を使用するようにしてください。

また、メモリが限られている場合にパフォーマンスを適切に低下させるにはどうすればよいですか? もご覧ください。

于 2012-11-20T18:48:46.133 に答える