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 :

Problème avec une OutOfMemoryError


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Par défaut Problème avec une OutOfMemoryError
    Bonjour,

    Je rencontre une OutOfMemoryError lors de l'exécution de mon application.

    Le but de ma méthode est de stocker l'image que je télécharge dans la variable que j'ai nommée très originalement " image " pour l'utiliser dans une autre méthode par la suite.

    Je vous mets le code posant problème ci-dessous :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    public boolean telecharger() 
    {
    	try
    	{
    		URL connexion = new URL(adresse);
     
    		URLConnection telechargement = connexion.openConnection();
     
    		InputStream lecture = telechargement.getInputStream();
     
    		BufferedInputStream buffer = new BufferedInputStream(lecture);
     
    		BitmapFactory.Options options = new BitmapFactory.Options();
     
                    options.inInputShareable = true;
     
    		options.inPurgeable = true;
     
    		// options.inSampleSize = 4;
     
    		Bitmap photo = BitmapFactory.decodeStream(buffer, null, options);
     
    		image = photo.copy(Bitmap.Config.ARGB_8888, true);
     
    		buffer.close();
     
    		lecture.close();
     
    		photo.recycle();
     
    		photo = null;
     
    		return true;
    	}
    	catch (Exception e) 
    	{
    		e.printStackTrace();
     
    		return false;
    	}
    }
    Voici maintenant l'erreur que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    06-04 11:15:40.780: W/System.err(8128): Caused by: java.lang.OutOfMemoryError
    06-04 11:15:40.780: W/System.err(8128): 	at android.graphics.Bitmap.nativeCopy(Native Method)
    06-04 11:15:40.780: W/System.err(8128): 	at android.graphics.Bitmap.copy(Bitmap.java:403)
    06-04 11:15:40.780: W/System.err(8128): 	at vesalis.source.Effet.telecharger(Effet.java:43)
    06-04 11:15:40.780: W/System.err(8128): 	at vesalis.source.TelechargementCalques.recupererCalques(TelechargementCalques.java:295)
    06-04 11:15:40.780: W/System.err(8128): 	at vesalis.source.TelechargementCalques.doInBackground(TelechargementCalques.java:127)
    06-04 11:15:40.780: W/System.err(8128): 	at vesalis.source.TelechargementCalques.doInBackground(TelechargementCalques.java:1)
    Je parviens à éviter cette erreur en utilisant l'option " inSampleSize " mais ayant besoin d'images de qualités je ne peux pas garder cette solution.

    En vous remerciant par avance de l'attention que vous pourrez porter à mon problème,

    Nylwen

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 168
    Par défaut
    La ligne 43 dans télécharger() correspond à quelle ligne ici dans le code posté ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Quelles sont les dimensions de l'images? Une image trop grande n'a aucune chance de tenir en entier dans la mémoire d'un appareil mobile

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Par défaut
    La ligne 43 est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    image = photo.copy(Bitmap.Config.ARGB_8888, true);
    La taille de l'image est d'environ 300 Ko. En revanche je télécharge une cinquantaine d'images de cette taille donc le problème se situe peut-être à ce niveau là.

    Cette application que je développe en Android a déjà été développé avec Flash par mon entreprise. Flash permet l'export du projet en .apk et l'application fonctionne très bien sur le périphérique avec les images en qualité maximale. Il n'y a donc pas de raisons qu'Android ne le permette pas.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 149
    Par défaut
    et tu fais une copie de chaque image?

  6. #6
    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
    Tu dois avoir une mauvaise gestion quelque part.
    300 * 50 = 15 000 Ko, soit ~14,5 Mo. La taille mémoire minimum est de 26 Mo (le 32 semble le plus commun) au minimum. En voyant large, tes images prennent environs 20 Mo. Donc ton application bouffe de 6 à 12 Mo seule.

    Peux-tu mettre le stacktrace complet (surtout avec le mention du heap) ?
    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

Discussions similaires

  1. Problème avec une UDF
    Par kanmaber dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/08/2004, 23h42
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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