java.lang.OutOfMemoryError: bitmap taille dépasse VM budget - android - combien d'images?
Je développe une application android et que j'ai lu et appris par moi-même, je ne peux pas avoir beaucoup d'images sur l'écran au même moment ou je vais avoir une exception à la règle.
La question est de savoir combien d'images ou combien de KO dans des images ou de la façon dont beaucoup de mises en page/images puis-je avoir en même temps à l'écran.
Je sais que ce n'est pas la seule chose qui a de l'influence sur la mémoire, mais je suis à la recherche d'un numéro afin que je puisse planifier autour d'elle.
Grâce
Daniel
Edit:
Je viens de trouver cela sur l'android dev site (http://developer.android.com/resources/articles/future-proofing.html)
Technique pour Éviter, N ° 3: Aller à la Mer avec des Mises en page
En raison de changements dans le rendu de l'Affichage de l'infrastructure, de manière déraisonnable profonds (plus de 10) ou large (plus de 30 au total) Vue des hiérarchies dans les mises en page sont maintenant susceptibles de provoquer des pannes. C'était toujours un risque pour excessivement complexes, mises en page, mais vous pouvez penser à Android 1.5 comme étant de mieux que de 1.1 à exposer ce problème. La plupart des développeurs n'aurez pas besoin de vous inquiéter à ce sujet, mais si votre application a très mises en page complexes, vous aurez besoin de le mettre sur un régime alimentaire. Vous pouvez simplifier vos mises en page en utilisant le plus avancé de la mise en page des classes comme FrameLayout et TableLayout.
Je suppose que cela peut être mon problème.
Quand il est dit "large", est-ce qu'il dit sur le dernier niveau ?
Grâce
Daniel
Si vous vous posez, vous ne pouvez pas se le permettre.
OriginalL'auteur Daniel Benedykt | 2009-12-23
Vous devez vous connecter pour publier un commentaire.
L'une des erreurs les plus communes que j'ai trouvé développement d'Applications Android est le
java.lang.OutOfMemoryError: Bitmap Size Exceeds VM Budget
erreur.J'ai trouvé cette erreur fréquemment sur les activités à l'aide de beaucoup d'images après le changement d'orientation: l'Activité est détruite, la création et les mises en page sont “gonflés” dans le XML de la consommation de la mémoire virtuelle disponible pour les bitmaps.
Images sur l'activité précédente disposition ne sont pas correctement libéré par le garbage collector parce qu'ils ont des références croisées à leur activité. Après de nombreuses expériences, j'ai trouvé une très bonne solution pour ce problème.
Tout d'abord, définissez le id l'attribut de la vue parent de votre mise en page XML:
Puis, sur la
onDestroy()
méthode de votre Activité, appelez le unbindDrawables() la méthode passage d'une référence à la Vue parent et ensuite faire un Système.gc()Ce unbindDrawables() la méthode explore le point de vue de l'arbre de manière récursive et:
OriginalL'auteur hp.android
Cette réponse a 2 parties
1) ses pas combien d'images à l'écran, mais être prudent sur le nettoyage tout en place lors de la finalisation de l'activité
2) (
l'épreuve de l'Avenir de Votre Application
)Technique pour Éviter, N ° 3: Aller à la Mer avec des Mises en page
En raison de changements dans le rendu de l'Affichage de l'infrastructure, de manière déraisonnable profonds (plus de 10) ou large (plus de 30 au total) Vue des hiérarchies dans les mises en page sont maintenant susceptibles de provoquer des pannes. C'était toujours un risque pour excessivement complexes, mises en page, mais vous pouvez penser à Android 1.5 comme étant de mieux que de 1.1 à exposer ce problème. La plupart des développeurs n'aurez pas besoin de vous inquiéter à ce sujet, mais si votre application a très mises en page complexes, vous aurez besoin de le mettre sur un régime alimentaire. Vous pouvez simplifier vos mises en page en utilisant le plus avancé de la mise en page des classes comme FrameLayout et TableLayout.
Daniel
OriginalL'auteur Daniel Benedykt
La quantité de mémoire varie d'un appareil à l'autre et le montant que vous avez à jouer avec dépend de ce que le système est en train de faire à l'époque. Votre meilleur pari est même pas parvenu à faire fonctionner le système de mémoire si vous pouvez l'aider. Que faites-vous que vous avez besoin que de nombreuses images sur l'écran?
OriginalL'auteur CaseyB
Cette chose est dépend de la taille de SEGMENT de mémoire du téléphone .
donc, si votre application acquérir plus de tas de téléphone fourni, il peut être de créer un problème .
la nouvelle génération appareil android contiennent .voici la liste de quelques
HTC Wildfire (2.2.1) = 16MB.
HTC Wildfire S (2.3.5) = 20 MO.
HTC Salsa (2.3.3) = 20 MO.
HTC Desire (2.3.3) = 32 MO.
HTC Desire S (2.3.5) = 32 MO.
Samsung Galaxy S GT-I9000 (2.2) = 48 MO.
Samsung Galaxy R GT-I9103 (2.3.5) = 64 MO.
Samsung Galaxy Y GT-S5360 (2.3.5) = 64 MO
donc, il n'est pas certan solution pour elle , mais vous pouvez essayer d'optimiser la taille du bitmap .
par exemple recycler le bitmap après utilisation . ou faire un autre à l'aide de bitmapFectory deoeed de sampleSize .
SI vous utilisez un émulateur, vous pouvez créer un dispositif qui contiennent plus de tas de la taille d'Ajout de nouveau matériel supplémentaire configurer dans votre avd manager comme une machine virtuelle heap size = 32 ou vers le haut .
oui, vous avez raison,regarde j'ai édité
OriginalL'auteur dharam