elmarco06 Posté(e) 24 septembre 2013 Share Posté(e) 24 septembre 2013 (modifié) 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 Modifié 25 septembre 2013 par elmarco06 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 24 septembre 2013 Share Posté(e) 24 septembre 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) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
elmarco06 Posté(e) 24 septembre 2013 Auteur Share Posté(e) 24 septembre 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 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.