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.
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