2010-08-21 5 views
4

J'ai 2 calme grandes animations chaque 50pics un 20kb deux définis comme Animations .xmlAndroid releaseBackgroundResource version de la mémoire?

Un je laisse commencer dès le début et le second après un bouton clic.

//Start immediatly 
    imgView.setBackgroundResource(R.layout.anim1); 
       rocketAnimation = (AnimationDrawable) imgView.getBackground(); 

//Start after button click 
    imgView.setBackgroundResource(R.layout.anim2); 
       rocketAnimation = (AnimationDrawable) imgView.getBackground(); 

Il fonctionne très bien, jusqu'à ce que je frappe le bouton et attribuer la deuxième anim à mon avis

08-22 14:56:03.886: DEBUG/AndroidRuntime(1541): Shutting down VM 
08-22 14:56:03.886: WARN/dalvikvm(1541): threadid=3: thread exiting with uncaught exception (group=0x4001da28) 
08-22 14:56:03.886: ERROR/AndroidRuntime(1541): Uncaught handler: thread main exiting due to uncaught exception 
08-22 14:56:04.096: ERROR/AndroidRuntime(1541): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
08-22 14:56:04.096: ERROR/AndroidRuntime(1541):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 

Il semble definitly que chaque animation pour lui-même est très bien (je pourrais même mettre anim2 au Autostart). mais les deux dépasseront la mémoire.

Btw. sur mon Nexus One cela fonctionne parfaitement. Où il échoue est sur G1 1.6 (même dans le simulateur).

Alors, comment libérer anim1 avant d'affecter anim2 ??

thx chris

Répondre

0

Essayez d'exécuter

rocketAnimation.setCallback(null); 

avant de vous montrer anim2. Btw: N1 a plus de tas par application autorisée (24mb) que le G1 (16mb). Samsung Galaxy S a encore plus (48MB). Mais via le paramètre, vous pouvez également définir une limite de tas supérieure pour l'émulateur; (Malheureusement, pas pour un téléphone non raclé si).

+0

Salut, j'ai essayé en ce moment ... n'a pas aidé, encore juste planter: ( comme mentionné chacun pour son travail de soi.ainsi le mem pour un de ces anims est suffisant. venez libéré –

+0

peut-être l'animation est simple trop grande pour l'appareil.Vous pouvez calculer la mémoire qu'il mange.Voir ma réponse sur http://stackoverflow.com/questions/3238388/android-out-of-memory-exception -in-gallery/3238945 # 3238945 ... la taille de fichier des images (c'est-à-dire 20kB) n'a pas d'importance, ce qui compte c'est sa largeur et sa hauteur, car tout est converti en bitmaps en interne J'utilise –

+0

Merci pour l'instant mon application marche bien sur 2.2 (ici la gestion de la mémoire est beaucoup mieux) ... va essayer votre code aussi avec 1.6 - 2.0 pour l'instant dit en 2.2: 0 8-22 15: 16: 30.564: DEBUG/1 (27859): debug.heap natif: alloué 3,66 Mo de 3,70 Mo (0,03 Mo gratuit) dans [com.chris.myapp.mainactivity] 08-22 15:16: 30.564: DEBUG/1 (27859): debug.memory: alloué: 2.00MB de 24.00MB (0.00MB gratuit) –

0

Essayez d'ajouter imgView.setBackgroundResource (0); avant la ligne imgView.setBackgroundResource (R.layout.anim2);

Questions connexes