View Pager mit Universal Image Loader Out of Memory " - Fehlermeldung

Ich bin nicht wirklich sicher, ob ein ViewPager mit Universal Image Loader kann/sollte verwendet werden, als eine Alternative für eine Galerie wie interface, da ich auf einen Out of Memory Fehler beim laden der Bilder von der SD-Karte und betrachten Sie Sie im Vollbild-Modus. Egal welche Nummer, es funktioniert alles sehr gut mit einem GridView-aber beim betrachten der Bilder in der View Pager, einzelnen bitmap-hält das Essen bis eine Menge Speicher, und nach 10 oder so Bilder, es gibt die out-of-memory-Fehler.

Ich gesehen habe fast alle Fragen, die gepostet wurden, hier bezogen auf die Out-of-Memory-Fehler beim arbeiten mit dem Universal Image Loader und in jedem von Ihnen gibt es eine Konfigurationen-Fehler als Ursache.

Ich weiß nicht, ob ich das falsche Konfigurationen oder was, aber ich habe verschwendet viel Zeit auf ihm und bin irgendwie hängen geblieben, keine Hilfe/Ratschläge würde geschätzt.

Sind die Konfigurationen für die ImageLoader:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
            .memoryCache(new WeakMemoryCache())
            .denyCacheImageMultipleSizesInMemory()
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .imageDownloader(new ExtendedImageDownloader(getApplicationContext()))
            .tasksProcessingOrder(QueueProcessingType.LIFO)
//         .enableLogging() //Not necessary in common
            .build();

Das Display-Bild-Optionen sind:

options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.image_for_empty_url)
            .resetViewBeforeLoading()
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .displayer(new FadeInBitmapDisplayer(300))
            .build();

Ich bin mit dem Beispiel-Projekt, das mit der Bibliothek, aber diese Einstellungen nicht funktionieren, entweder, es einfach abstürzt nach einiger Zeit. Meine Vermutung ist, dass es einen bestimmten callback, wo ich Sie zu recyceln bitmaps von den Ansichten aus, die nicht sichtbar sind.

EDIT: ich weiß, das ist ein Speicher-Leck, die Ansichten, die nicht sichtbar sind, werden zerstört, wenn Sie sein sollten, aber der Speicher wird nicht freigegeben, wie es sollte. Hier ist die Umsetzung der destroyItem Rückruf, befolgt die Tipps in verschiedenen Fragen, aber noch keinen finden, der memory-leak.

@Override
        public void destroyItem(View container, int position, Object object) {
//         ((ViewPager) container).removeView((View) object);
            Log.d("DESTROY", "destroying view at position " + position);
            View view = (View)object;
            ((ViewPager) container).removeView(view);
            view = null;
        }

InformationsquelleAutor der Frage Faraz Hassan | 2013-02-19

Schreibe einen Kommentar