Android: Comment résoudre Bitmap java.lang.OutOfMemoryError?
Je suis java.lang.OutOfMemoryError
lors de l'utilisation de bitmap à afficher des images de grande taille.
Pour le redimensionnement de l'image, j'ai évoqué lien suivant Enregistrer les images Bitmap et les BitmapFactory.decodeFile.
Mon logcat est comme suit:
FATAL EXCEPTION: main
java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:604)
at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
at com.android.restaurant.DescriptionPage.getResizedBitmap(DescriptionPage.java:327)
at com.android.restaurant.DescriptionPage.setDetailsIntoLayout(DescriptionPage.java:172)
at com.android.restaurant.DescriptionPage.onCreate(DescriptionPage.java:101)
at android.app.Activity.performCreate(Activity.java:4397)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834)
at android.app.ActivityThread.access$500(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4135)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
- Il y a quelque chose de mal avec votre code, ou le téléphone ne dispose pas de suffisamment de mémoire. De toute façon, nous ne pouvons pas vous aider, au moins jusqu'à ce que vous poster votre code.
- reportez-vous à "Affichage des images de manière Efficace" de l'article ci-dessous. Si vous rencontrez toujours des problèmes, veuillez 1) afficher le code pertinent, 2) dites-nous quelque chose à propos de votre fichier bitmap (comme la façon dont il est grand dans le h/w et de la taille du fichier!), 3) dites-nous combien de mémoire de votre système avant d'essayer de charger l'image bitmap
- [Essayer][1] [1]: stackoverflow.com/questions/10081008/... Il va vraiment vous aider.
- j'ai mis à jour ma question.
Vous devez vous connecter pour publier un commentaire.
Puisque vous n'avez pas posté votre code, il est difficile de savoir s'il y a un bug ou probablement inefficace code qui peut être amélioré.
Mais en général, la JVM de la mémoire est limitée, de sorte que le chargement de l'image grand peut causer
OutOfMemoryError
. Vous pouvez essayer d'augmenter la mémoire JVM à l'aide de-Xmx
option. C'est la première et la plus simple façon.Autre façon est de diminuer votre image (si c'est possible). Ou probablement utiliser format autre que le format BMP (par exemple JPG). Il garantit la bonne qualité et nécessite moins de mémoire.
Le défi dans le développement d'application mobile, c'est que vous avez peu de mémoire.
Première chose coincé dans mon esprit, c'est d'essayer d'utiliser le format PNG(Portable Network graphics) au lieu de les BitMaps (si possible).
En dehors de cela, Il semble que ce soit existant question s'il vous plaît vérifier:-
http://code.google.com/p/android/issues/detail?id=8488