Universal-Image-Loader: OutOfMemory-Fehler

Ich verwende universal-image-loader-1.6.2.jar (Neueste). Ich versuche, diese Bilder mithilfe dieser Bibliothek herunterzuladen und zwischenzuspeichern. Ich habe 47 Bilder vom Server heruntergeladen werden, insgesamt 5,22 Mb.My Maximale Bilder sind von Dimension sind 720X480 und Größe um 143kb. Es geht gut bis 40-41 Bilder danach gibt es Fehler

11-02 16:30:12.150: E/ImageLoader(31033): null
11-02 16:30:12.150: E/ImageLoader(31033): java.lang.OutOfMemoryError
11-02 16:30:12.150: E/ImageLoader(31033):   at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-02 16:30:12.150: E/ImageLoader(31033):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
11-02 16:30:12.150: E/ImageLoader(31033):   at com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:83)
11-02 16:30:12.150: E/ImageLoader(31033):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.saveImageOnDisc(LoadAndDisplayImageTask.java:218)
11-02 16:30:12.150: E/ImageLoader(31033):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:138)
11-02 16:30:12.150: E/ImageLoader(31033):   at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:72)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-02 16:30:12.150: E/ImageLoader(31033):   at java.lang.Thread.run(Thread.java:856)
11-02 16:30:47.170: E/Adreno200-ES20(31033): <qgl2DrvAPI_glUseProgram:1318>: **** 31033: glUseProgram(3)
11-02 16:30:47.170: E/Adreno200-ES20(31033): <qgl2DrvAPI_glUseProgram:1318>: **** 31033: glUseProgram(6)

Ich habe Vorschläge zu OOM auf git-hub gesehen und umgesetzt. Ich bin ihnen gefolgt, trotzdem bekomme ich einen Fehler. Hier ist mein Code

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
        cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"neongall");
    else
        cacheDir=context.getCacheDir();
    if(!cacheDir.exists())
        cacheDir.mkdirs();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
    .threadPoolSize(3)
    .threadPriority(Thread.NORM_PRIORITY - 1)
    .memoryCache(new WeakMemoryCache())
    .denyCacheImageMultipleSizesInMemory()
    .offOutOfMemoryHandling()
    .discCacheExtraOptions(720, 480, CompressFormat.JPEG, 75)
    .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
    .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
    .imageDownloader(new URLConnectionImageDownloader(120 * 1000, 120 * 1000)) // connectTimeout (5 s), readTimeout (20 s)
    .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
    .enableLogging()
    .build();
    //Initialize ImageLoader with created configuration. Do it once on Application start.
    imageLoader.init(config);


    options = new DisplayImageOptions.Builder()
    .cacheOnDisc()
    .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
    .displayer(new RoundedBitmapDisplayer(10))
    .build();

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage