2010-08-10 3 views
2

J'ai un bitmap que je charge de la carte SD en permettant à l'utilisateur de choisir une image à afficher. Une fois que le bitmap est créé, je définis le Bitmap dans un ImageView:Bitmap OutOfMemory sur plusieurs changements d'écran

mBitmap = Bitmap.createBitmap(Media.getBitmap(this.getContentResolver(), mPictureUri)); 
mImageView.setImageBitmap(mBitmap); 

Cela fonctionne très bien. Mais, si je change l'orientation de l'écran de portrait en paysage, et inversement plusieurs fois, je reçois toujours une exception OutOfMemory. En onPause, j'appelle mBitmap.recycle(), puis sur onResume, j'appelle le code ci-dessus pour créer le bitmap et définir ImageView. Puisque je recycle l'image à chaque fois, comment puis-je obtenir une erreur OutOfMemory?

Dans tous les cas, étant donné que cela a échoué, j'ai trouvé un article qui disait essayer d'utiliser onRetainNonConfigurationInstance() et getLastNonConfigurationInstance(). Voir l'article Save cache when rotate device. J'ai changé mon code pour travailler de cette façon, et j'ai toujours une erreur. En changeant le code, j'ai eu l'appel de getLastNonConfigurationInstance() dans onCreate(), et j'ai enlevé tout le code dans onPause et onResume.

Quelqu'un peut-il me dire quel est le problème, ou fournir un moyen de charger simplement une image, puis être capable de mettre en pause et de reprendre l'activité sans manquer de mémoire? Merci.

Répondre

0

Les fuites de mémoire peuvent être dues au maintien de l'instance de contexte qui contient à son tour des références à tous les objets de l'activité avant qu'elle ne soit détruite. L'article explique mieux. Vous devriez réduire la taille des images car il y a 16 Mo par application, si vous avez de grandes bitmaps en cours de recréation, elles pourraient s'accumuler à 16 Mo avant qu'elles ne soient collectées ou en cas de fuites de mémoire.

+0

Merci encore Megha, j'ai accepté votre réponse ci-dessus. Comme je l'ai dit plus tôt, l'utilisation de BitmapFactory.options a résolu le problème pour moi. – Michael

Questions connexes