2016-03-31 3 views
1

Я загружаю около 50 изображений. В моей деятельности у меня есть такая конфигурацияАндроид универсальный загрузчик изображений из памяти

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .cacheOnDisk(true).cacheInMemory(true) 
      .imageScaleType(ImageScaleType.EXACTLY) 
      .resetViewBeforeLoading(true) 
      .displayer(new FadeInBitmapDisplayer(300)) 
      .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
     .defaultDisplayImageOptions(defaultOptions) 
     .memoryCache(new WeakMemoryCache()) 
     .diskCacheSize(100 * 1024 * 1024) 
     .build(); 

    ImageLoader.getInstance().init(config); 

в binderdata

ImageLoader imageLoader = ImageLoader.getInstance(); 
imageLoader.displayImage(uri, holder.iv_img); 

Некоторые изображения загружаются, но некоторые из них не так и я получаю OutOfMemory ошибку.

ответ

1

Проверить это советы от Useful Info

Если вы часто получили OutOfMemoryError в ваше приложение с помощью универсального Image погрузчика затем:

  1. Отключить кэширование в памяти. Если OOM все еще происходит, кажется, ваше приложение имеет утечку памяти. Используйте MemoryAnalyzer для его обнаружения. В противном случае попробуйте выполнить следующие шаги (все или несколько):
  2. Уменьшите размер пула потоков в конфигурации (.threadPoolSize (...)). Рекомендуется 1 - 5.
  3. Используйте .bitmapConfig (Bitmap.Config.RGB_565) в параметрах отображения. Растровые изображения в RGB_565 потребляют в 2 раза меньше памяти, чем в ARGB_8888.
  4. Использование .imageScaleType (ImageScaleType.EXACTLY) (Вы уже использовать эти советы)
  5. Используйте .diskCacheExtraOptions (480, 320, NULL) в конфигурации

Надеется, что это помогает !!

+0

если использование (.threadPoolSize (...)). 1 - 5, так лучше 1 или 5? – abcd1234

+0

threadPoolSize определяет количество потоков, работающих одновременно. Если вы устанавливаете большой размер пула, скорость пользовательского интерфейса может быть значительно уменьшена, например, прокрутка списка может замедляться. В http://stackoverflow.com/questions/16603245/universal-image-loader-fails-to-load-images-sometimes @Nostra рекомендуем использовать 3. –

+0

Большое вам спасибо – abcd1234

0

1. Я предлагаю вам пройти проверку Библиотека управления фотографиями по Facebook, что является Fresco, что является довольно удивительным и зрелым по сравнению с другими библиотеками Загрузка изображений.

2.Fresco обрабатывает все функции кэширования изображений с архитектурой 3 уровня (BITMAP_MEMORY_CACHE, ENCODED_MEMORY_CACHE и DISK_CACHE). Он также уменьшает проблемы с OOM (Out Of Memory). Когда изображение в представлении выходит из экрана, оно автоматически перерабатывает растровое изображение, поэтому освобождает память.

3.Fresco имеет SimpleDraweeView, как настраиваемое представление изображения, которое поддерживает закругленные углы и круги ссылку и поддерживает анимированные (.gif, .webp), а также нормальные изображения (.jpg, .png).

+0

Я попробую. thank – abcd1234

+0

Может ли Fresco создавать миниатюры видео (.mp4, .3gp и т. д.)? –

+0

@hasnain_ahmad это видео youtube? –

Смежные вопросы