elmarco06 Posted September 24, 2013 Share Posted September 24, 2013 (edited) Bonjour, Je vous soumet un problème auquel je suis confronté. J'ai une activité qui affiche une suite d'image via un fichier xml d'animation. Voici un exemple de contenu <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/taquet1" android:duration="750" /> <item android:drawable="@drawable/taquet2" android:duration="750" /> <item android:drawable="@drawable/taquet3" android:duration="750" /> <item android:drawable="@drawable/taquet4" android:duration="750" /> </animation-list> Dans le code de mon activité je charge l'animation dynamiquement car j'ai plusieurs animations définies selon le contexte ImageView image = (ImageView) findViewById(R.id.image_animation); image.setBackgroundResource(<id_de_mon_fichier_xml>); AnimationDrawable animation = (AnimationDrawable) image.getBackground(); animation.start(); La première fois que je rentre dans l'activité, je n'ai aucun soucis, tout se passe bien. Je navigue dans mon appli, je reviens vers l'activité contenant l'animation et j'obtiens un OutOfMemory exception sur la ligne image.setBackgroundResource(<id_de_mon_fichier_xml>); Pour info les animations contiennent entre 5 et 10 images et les images font 50ko. Avez-vous déjà eu à manipuler des animations d'images ? si oui quelle est la meilleure approche ? Merci pour votre aide . Marc Edited September 25, 2013 by elmarco06 Quote Link to comment Share on other sites More sharing options...
chpil Posted September 24, 2013 Share Posted September 24, 2013 Bonjour, Quand démarres-tu ton animation (dans quelle méthode de ton Activity) ? Penses-tu bien à l'arrêter lorsque tu n'en as plus besoin / lorsque tu changes d'animation ? Typiquement, on démarre une animation lorsque l'Activity devient visible (dans le onStart) et on l'arrête lorsqu'elle n'est plus visible (dans le onStop) Quote Link to comment Share on other sites More sharing options...
elmarco06 Posted September 24, 2013 Author Share Posted September 24, 2013 Merci pour ta réponse. Je lance bien l'animation dans le onStart() par contre je n'ai effectivement rien fait dans le onStop(). Je viens de faire le test en stoppant l'animation dans la méthode onStop() mais j'ai le même symptôme. Je ne dois pas utiliser la bonne méthode pour charger mes animations. je continue mes investigations. Bon j'ai trouvé cette page qui indique que la gestion de la mémoire pour les animations par Android n'est pas tip top, il vaut mieux se faire sa propre classe qui gère le chargement des images et leur apparition. Il y a un exemple de code que j'ai implémenté rapido et cela a supprimé mes exceptions. On va voir avec le temps si ça fonctionne bien et en cas je mettrai le post à résolu http://stackoverflow.com/questions/8692328/causing-outofmemoryerror-in-frame-by-frame-animation-in-android Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.