2010-04-10 5 views
0

Je développe une application simple qui fait un peu de traitement d'image. Il est divisé en deux activités; le principal avec quelques éléments d'affichage et le second qui est utilisé pour capturer des images de l'appareil photo du téléphone. Pour décrire mon problème: Je démarre l'application, capture une image (en démarrant une nouvelle intention avec la sous-activité) et toutes les données sont affichées correctement. Si je capture une autre image après cela, je lance dans unprovoque une deuxième sous-activité provoque java.lang.OutOfMemoryError

java.lang.OutOfMemoryError - taille bitmap dépasse le budget VM

Je ne stocker le bitmap capturé, dans la deuxième activité j'extrayez des données et de le transmettre à l'activité principale; finition (finition()) la sous-activité par la suite. Je ne sais vraiment pas ce que je peux faire à ce sujet. Merci d'avance!

salutations, Zacherl

PS: Il est ma première approche android, je présente des excuses pour toute erreur de débutant stupide que je l'ai fait; Si quelqu'un a besoin de plus amples informations, je serais heureux de le fournir.

+0

J'ai résolu le problème en allouant un tableau booléen permanent (voir le commentaire à la première réponse); Je peux le faire parce que la taille de l'image ne change jamais. Merci pour tout le temps passé dans cette affaire! – Zacherl

Répondre

0

Vous pouvez consulter ce fil: Android memory allocation

vous ne recevez pas beaucoup de mémoire pour travailler avec de sorte que vous pourriez très bien ne pas avoir pas assez pour charger 2 grandes images de la caméra en mémoire avec tout le reste.

+0

Merci pour la réponse rapide! Le fait est que je ne peux pas réduire l'image parce que je perdrais la plupart des données contenues. Pour être plus précis: je stocke temporairement l'image complète dans un booléen-array que j'utilise pour extraire les données et après cette étape, je renvoie les données (un HashSet avec dix à quarante valeurs primitives). Je ne pense pas que le HashSet consomme autant d'espace donc je crains que le GC de la VM ne libère pas l'espace utilisé par le tableau booléen après que la méthode soit terminée. Est-ce que je me suis expliqué? – Zacherl

Questions connexes