1

たくさんの画像を含むリストビューがあります

画像を表示するために3つの異なる遅延ローダーを試しました

onScrollState!=IDLE の読み込みを無効にしました

スクロールが始まったときにロードタスクをキャンセルしました

それでも、スクロールするたびに、ガベージコレクターが何かを収集していることが、ほぼすべての画像の後にログに表示されるジャンプのようなリストです

09-12 16:08:20.093: D/dalvikvm(15748): GC_EXTERNAL_ALLOC freed 401K, 54% free 3856K/8327K, external 12043K/12209K, paused 33ms

奇妙な部分は-画像の読み込みをすべて無効にし、レイアウトをまったく表示しない場合です

ガベージコレクターはまだ働いています.....

ガベージ コレクターがこれほどまでに機能している原因は何でしょうか?

これが私のレイアウトです

 <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/photo1"
        android:layout_width="match_parent"
        android:layout_height="140dp"
        android:layout_gravity="center"
        android:scaleType="centerCrop" />

これは私のgetViewです

    public View getView(final int position, View convertView, ViewGroup parent) {
                    ViewHolder vh;
    if(convertView == null){ 
    vh = new ViewHolder();
    convertView = (ImageView) layoutInflater.inflate(R.layout.photo,parent,false);
    vh.iv = convertView;
    convertView.setTag(vh);

    }else {
    vh = (ImageView) convertView.getTag();
      Log.i(TAG,"displaying old view: "+position);
    }
      lazyLoader.load(images[position],vh.iv);
    return convertView;
}

}

これはログ出力です

ロゴ出力

4

1 に答える 1

1

使用してみてください:

https://github.com/nostra13/Android-Universal-Image-Loader

また、次のように設定します。

PauseOnScrollListener listener = new PauseOnScrollListener(
                com.nostra13.universalimageloader.core.ImageLoader.getInstance(), 
                pauseOnScroll, pauseOnFling);
list.setOnScrollListener(listener);

スクロール中の画像の読み込みを防ぎます。それでも問題が発生する場合は、ホルダーのパターンを確認してください。

于 2013-09-12T14:29:38.317 に答える