ListView с множеством скачков изображений
У меня есть список, который содержит много изображений
Я пробовал 3 разных ленивых загрузчика для отображения изображений
Я отключил загрузку на ScrollState!=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;
}
}
и это вывод журнала
1 ответ
Попробуй использовать:
https://github.com/nostra13/Android-Universal-Image-Loader
Также установите:
PauseOnScrollListener listener = new PauseOnScrollListener(
com.nostra13.universalimageloader.core.ImageLoader.getInstance(),
pauseOnScroll, pauseOnFling);
list.setOnScrollListener(listener);
Это предотвратит загрузку изображения при прокрутке. Если глюки все еще появляются, проверьте ваш шаблон держателя.