2011-05-25 4 views
0

Dans mon jeu, j'ai une image bitmap qui fonctionne comme l'arrière-plan des jeux (dessiné sur une toile). Plus l'image est grande, plus il y a d'espace dans le jeu pour l'utilisateur, donc je veux que l'image bitmap soit aussi grande que possible sans causer de problèmes de mémoire. Eh bien, je suis allé à la mer et a dessiné un énorme bitmap, ce qui a causé une erreur de mémoire insuffisante immédiatement lors de l'initialisation, donc j'ai réduit un peu le bitmap. Mais je pense que c'est trop petit. Ma question est comment puis-je mesurer la limite "sûre" de la mémoire utilisée?Android Mémoire insuffisante Erreur - Bitmap est trop gros

J'ai utilisé les méthodes suivantes et lire la sortie en CatLog:

Debug.getNativeHeapAllocatedSize(); 
Log.v("MEMORY",String.valueOf(Debug.getNativeHeapAllocatedSize()));      
Log.v("FreeMEMORY",String.valueOf(Debug.getNativeHeapFreeSize())); 

dont les résultats étaient les suivants:

05-25 09:53:54.044: VERBOSE/MEMORY(23044): 9715624 

05-25 09:53:54.044: VERBOSE/FreeMEMORY(23044): 61528 

La mémoire libre semble assez faible? Cette coupe est-elle proche de l'os?

+0

Android recommande images 9 YASS arrière-plans, avez-vous essayé? – omermuhammed

+0

La documentation indique que 9patch est utilisé pour étirer les bitmaps dans Views. Je dessine le mien sur une toile. –

+0

Au lieu d'utiliser un bitmap de grande taille, avez-vous essayé de mettre en mosaïque l'image pour créer l'arrière-plan? Je l'ai vu utilisé dans les toiles de jeu avant. – omermuhammed

Répondre

1

taille re votre image en utilisant des images d'échantillonnage et de stocker dans le fichier en sdcard il serait préférable

1

Si vous bitmap CISSEMENT puis aussi d'abord il est chargé en mémoire et éventuellement vous donne l'erreur.

Vous devez utiliser un élément appelé BitmapFactory.Options qui précalibre avant de charger le bitmap.

Refere to this question's maximum voted answer.