IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Augmenter la mémoire allouée à une application


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut Augmenter la mémoire allouée à une application
    Bonjours après maintes recherches je viens m'adresser à vous.
    J'essaie d'afficher des images prises par l'appareil photo et de les afficher dans l'application. Quand je prends des images basse résolution (disons 100kB de taille), je n'ai pas de problèmes à les passer en bitmap pour l'affichage, par contre dès que je les prends en haute résolution(1.5MB), l'application plante avec l'exception Error java.lang.OutOfMemoryError. ça arrive soit sur mes smartphones(Samsung Galaxy SII,Samsung Galaxy SIII) soit sur toutes les tablettes.
    Pour l'instant j'ai résolu en baissant manuellement la qualité et la taille des photos mais, vue l'évolution des appareils photo avec toujours plus de résolution, ce problème risque de se présenter de plus en plus souvent.
    Y a-t-il pas une solution permanente pour augmenter la mémoire allouée à mon Application par Android sans devoir intervenir manuellement sur l'appareil et dans le code?


    Les images sont stockées sous format Bitmap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    //creation de l'image
    Uri domuri1
     
    ContentValues cv = new ContentValues();
    		cv.remove("101");
    		domuri1 = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, cv);
    File domthumb1 = new File(domuri1.toString(), fileName1);
     
    //mise en place de la séléction de l'image
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");		
    intent.putExtra(MediaStore.EXTRA_OUTPUT, domuri1);
    startActivityForResult(intent, 100);
     
    //enregistrement des images
    ContentResolver cr = getContentResolver();
    bitmap1 = MediaStore.Images.Media.getBitmap(cr, domuri1 );
    imageView.setImageBitmap(bitmap1);
    Merci.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Quel est le message pour le OOM ?
    Quelle est ta heap size à ce moment ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    qu'es ce donc que le OOM? le logCat?
    si c'est ça voici le message d'erreur complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    07-19 11:17:30.515: E/AndroidRuntime(13046): FATAL EXCEPTION: main
    07-19 11:17:30.515: E/AndroidRuntime(13046): java.lang.OutOfMemoryError
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:643)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:727)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at Class.onActivityResult(P12.java:668)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.Activity.dispatchActivityResult(Activity.java:4746)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:2990)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:3037)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.ActivityThread.access$1100(ActivityThread.java:128)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.os.Looper.loop(Looper.java:137)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at android.app.ActivityThread.main(ActivityThread.java:4514)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at java.lang.reflect.Method.invokeNative(Native Method)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at java.lang.reflect.Method.invoke(Method.java:511)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
    07-19 11:17:30.515: E/AndroidRuntime(13046): 	at dalvik.system.NativeStart.main(Native Method)
    Pour répondre à ta seconde question voici les chiffre que j'obtient avec ces fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Log.i("debug","freeMemoryAllowed:"+Runtime.getRuntime().freeMemory());
    			Log.i("debug","maxMemoryAllowed:"+Runtime.getRuntime().maxMemory());
    			Log.i("debug","totalMemoryAllowed:"+Runtime.getRuntime().totalMemory());
    07-19 11:32:15.215: I/debug(14404): freeMemoryAllowed:2185368
    07-19 11:32:15.215: I/debug(14404): maxMemoryAllowed:67108864
    07-19 11:32:15.215: I/debug(14404): totalMemoryAllowed:62857184

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Merci pour l'exception.
    Peux-tu mettre aussi le message juste avant ? Il ressemble à quelque chose "tried to allocate 33,246 Mb to ...", un log de niveau "info" ou "verbose" de mémoire.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    EDIT:je n'ai pas un tel message. J'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    07-19 11:52:05.110: I/dalvikvm(15482):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    07-19 11:52:05.105: I/dalvikvm(15482): "main" prio=5 tid=1 RUNNABLE
    puis ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    07-19 11:52:05.105: I/dalvikvm(15482):   | schedstat=( 4478352079 721496049 3864 ) utm=374 stm=73 core=2
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:643)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:727)
    07-19 11:52:05.105: I/dalvikvm(15482):   at .onActivityResult(P12.java:673)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.Activity.dispatchActivityResult(Activity.java:4746)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.ActivityThread.deliverResults(ActivityThread.java:2990)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.ActivityThread.handleSendResult(ActivityThread.java:3037)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.ActivityThread.access$1100(ActivityThread.java:128)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.os.Handler.dispatchMessage(Handler.java:99)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.os.Looper.loop(Looper.java:137)
    07-19 11:52:05.105: I/dalvikvm(15482):   at android.app.ActivityThread.main(ActivityThread.java:4514)
    07-19 11:52:05.105: I/dalvikvm(15482):   at java.lang.reflect.Method.invokeNative(Native Method)
    07-19 11:52:05.105: I/dalvikvm(15482):   at java.lang.reflect.Method.invoke(Method.java:511)
    07-19 11:52:05.105: I/dalvikvm(15482):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
    07-19 11:52:05.110: I/dalvikvm(15482):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
    07-19 11:52:05.110: I/dalvikvm(15482):   at dalvik.system.NativeStart.main(Native Method)
    07-19 11:52:05.110: D/skia(15482): --- decoder->decode returned false
    07-19 11:52:05.110: D/AndroidRuntime(15482): Shutting down VM
    07-19 11:52:05.110: W/dalvikvm(15482): threadid=1: thread exiting with uncaught exception (group=0x40c641f8)
    07-19 11:52:05.110: E/AndroidRuntime(15482): FATAL EXCEPTION: main
    07-19 11:52:05.110: E/AndroidRuntime(15482): java.lang.OutOfMemoryError
    07-19 11:52:05.110: E/AndroidRuntime(15482): 	at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    et enfin j'ai le message d'erreur posté plus haut

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Mais encore avant ça....

    Les infos d'allocation c'est du "D" (debug) je crois.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/05/2009, 20h22
  2. [VB6] - Erreur mémoire avec une application multi feuille
    Par Aurazed dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/07/2007, 10h37
  3. comment augmenter les performances d'une application
    Par jasminblanc dans le forum Firebird
    Réponses: 1
    Dernier message: 17/07/2007, 19h39
  4. Réponses: 11
    Dernier message: 13/01/2006, 15h30
  5. Utilisation Mémoire d'une application
    Par scorplex dans le forum Composants VCL
    Réponses: 8
    Dernier message: 21/05/2005, 03h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo