10
votes

Mysterious StackTrace dans la console de développeur Android (taille bitmap dépasse 32bits)

Je reçois la stacktrace suivante dans la console de développeur. Certains rapportent "L'application ne démarre pas" ou "Crash au démarrage".

Je ne sais pas quoi faire, cela ne mentionne pas de la classe de mon application! Tout le monde a eu la même erreur et a trouvé un correctif? P>

java.lang.IllegalArgumentException: bitmap size exceeds 32bits
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:695)
at android.view.View.buildDrawingCache(View.java:6646)
at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1345)
at android.view.ViewGroup.drawChild(ViewGroup.java:1591)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:6996)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:6996)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054)
at android.view.ViewRoot.draw(ViewRoot.java:1632)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4358)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)


2 commentaires

C'est peut-être le cas que votre activité principale charge des ressources liées à sa présentation "à l'extérieur" de votre portée. Quoi qu'il en soit, il semble donc qu'il y ait une image causant des problèmes et qu'il n'y en a pas trop d'entre eux, essayez de les remplacer un par un avec par exemple. Icône Android par défaut jusqu'à ce que vous trouviez celui qui cause des problèmes.


Je faisais face au même problème parfois lorsque je développais un widget. Il a généralement été guéri par (c'était dans Eclipse BTW) Nettoyage du projet (Projet de menu-> Nettoyer), puis rafraîchissez le projet et de la construire à nouveau. Mais si quelqu'un connaît la raison exacte pour laquelle cela se produit, ce serait génial et je vais certainement voter pour la réponse! ;)


3 Réponses :


5
votes

Si c'est une question de quantité, vous devez Recycle Vos bitmaps.
Si c'est une question de taille (vous ne pouvez pas charger des images trop grosses), vous devez charger une copie plus claire de votre bitmap.

Voici le code pour créer une image plus petite xxx

insélistance définie sur une valeur > 1, demande au décodeur de sous-échantillonner l'image d'origine, renvoyant une image plus petite pour enregistrer la mémoire.
Utilisez une puissance de 2 pour qu'il soit plus efficace.

Ce message peut être utile


2 commentaires

Cela ne fonctionnera pas, il n'a rien à voir avec la taille, voir ma question: Ici


Comment cela résoudra-t-il le problème? Il n'y a pas de imageview mentionné dans la question ni aucun signe de créer un bitmap! View.BuildDrawingCache Créer une image trop grande pour une raison quelconque ....



1
votes

bitmap.createbitmap ()

jette illegalargumentException

Si la largeur X, Y, la largeur, les valeurs de hauteur sont en dehors des dimensions du bitmap source ou de la largeur de la largeur <= 0 ou la hauteur est <= 0

D'abord Assurez-vous que vos valeurs X, Y, largeur et de hauteur sont plus petites que le bitmap source.

Le problème pour moi était la matrice. Ma matrice a une valeur de traduction qui a apporté l'une des valeurs en dehors des limites du bitmap d'entrée.

J'espère que cela aide


0 commentaires

0
votes

Dans mon cas, c'était une erreur dans cette chaîne:

WebView.getSettings().setUseWideViewPort(true);


0 commentaires