2016-03-31 4 views
1

Ich lade etwa 50 Bilder. In meiner Tätigkeit habe ich diese Konfigurationandroid universal Bildlader nicht genügend Speicher

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); 

in binderdata

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

Einige Bilder geladen sind, aber einige sind nicht und ich bekomme OutOfMemory Fehler.

Antwort

1

Sehen Sie sich diese Tipps von Useful Info

Wenn Sie oft Universal-Bild Loader dann OutOfMemoryError in Ihrer App bekam:

  1. Disable Caching im Speicher. Wenn OOM weiterhin auftritt, scheint Ihre App ein Speicherleck zu haben. Verwenden Sie MemoryAnalyzer, um es zu erkennen. Ansonsten versuchen Sie die folgenden Schritte (alle oder mehrere):
  2. Reduce Thread-Pool-Größe in der Konfiguration (. ThreadPoolSize (...)). 1 - 5 wird empfohlen.
  3. Verwenden Sie .bitmapConfig (Bitmap.Config.RGB_565) in Anzeigeoptionen. Bitmaps in RGB_565 verbrauchen 2 mal weniger Speicher als in ARGB_8888.
  4. Verwenden .imageScaleType (ImageScaleType.EXACTLY) (Ihr schon diese Tipps verwenden)
  5. Verwendung .diskCacheExtraOptions (480, 320, null) in der Konfiguration

hoffe, das hilft !!

+0

wenn verwendet (. ThreadPoolSize (...)). 1 - 5, also 1 oder 5 ist besser? – abcd1234

+0

threadPoolSize bestimmt die Anzahl der Threads, die gleichzeitig ausgeführt werden. Wenn Sie eine große Poolgröße festlegen, kann die Geschwindigkeit der Benutzeroberfläche erheblich reduziert werden, z. B. kann das Scrollen in der Liste verlangsamt werden. In http://stackoverflow.com/questions/16603245/universal-image-loader-fails-to-load-images-sometimes @Nostra empfehlen zu verwenden 3. –

+0

vielen Dank – abcd1234

0

1.Ich würde vorschlagen, zur Kasse gehen Image Management Library von Facebook das ist Fresco das ist ziemlich genial und ausgereift im Vergleich zu anderen Image Loading Library.

2.Fresco behandelt alle Dinge Caching von Bildern mit 3-Tier-Architektur (BITMAP_MEMORY_CACHE, ENCODED_MEMORY_CACHE und DISK_CACHE). Es reduziert auch OOM (Out of Memory) Probleme. Wenn das Bild in einer Ansicht den Bildschirm verlässt, wird die Bitmap automatisch recycelt und der Speicher freigegeben.

3.Fresco hat SimpleDraweeView als benutzerdefinierte Bildansicht, die abgerundete Ecken und Kreise Link unterstützt und unterstützt animierte (.gif, .webp) sowie Normale Bilder (.jpg, .png).

+0

Ich werde es versuchen. danke – abcd1234

+0

Kann Fresco thumbnail of video (.mp4, .3gp etc.) verursachen? –

+0

@hasnain_ahmad ist es ein Youtube-Video? –