0

Je reçois l'erreur OutOfMemory lorsque je fais défiler environ 70 images à l'aide de JazzyViewPager.JazzyViewPager + ImageLoading = OutOfMemory

Il semble y avoir une mauvaise fuite de mémoire quelque part dans le pager Jazzy. Je vois que ça tient aux images même quand je les défile. Même sur les appareils plus costauds, je manque de mémoire après avoir fait défiler 70 images environ. J'utilise l'Universal-Image-Loader avec ce pager de vue, donc je ne sais pas si cela a quelque chose à voir avec ça.

Quelqu'un d'autre a ce problème?

Répondre

2

Il y a en effet une fuite dans JazzyViewPager.

J'ai couru un profileur de mémoire et a constaté que JazzyViewPager maintient une carte de toutes les vues ajoutées:

private HashMap<Integer, Object> mObjs = new LinkedHashMap<Integer, Object>(); 

public void setObjectForPosition(Object obj, int position) { 
    mObjs.put(Integer.valueOf(position), obj); 
} 

Il ajoute toujours des objets, mais jamais supprime.

Pour résoudre ce problème, j'ai ajouté une méthode remove au JazzyViewPager:

public void removeObject(int position) { 
    Object removed = mObjs.remove(position); 
    if (removed != null) { 
     LogUtils.LOGD(TAG, "Removed obj at pos " + position); 
    } 
} 

et l'a appelé de mon adaptateur destroyItem():

@Override 
public void destroyItem(ViewGroup container, int position, Object obj) { 
    container.removeView(((JazzyViewPager)container).findViewFromObject(position)); 

    // make sure to remove the reference from the jazzyviewpager map 
    ((JazzyViewPager)container).removeObject(position); 
} 

Je surveillais l'utilisation de la mémoire et tout va bien maintenant.

+0

Bon effort !! Merci a également mon problème –