Android setImageURI erreur de mémoire insuffisante
J'ai une petite activité qui doit montrer une image.
Si l'image n'est pas très petit (par exemple 1.12 Mo 2560x1920) il produit de mémoire sur le changement d'orientation de l'écran. J'ai essayé getDrawable.setCallback(null) mais pas de chance.
Où suis-je mal?
public class Fullscreen extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.gc();
setContentView(R.layout.fullscreen);
ImageView imageView = (ImageView) findViewById(R.id.full_screen_image);
long imageId = 2;
imageView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imageId));
}
}
OriginalL'auteur Improver | 2010-06-11
Vous devez vous connecter pour publier un commentaire.
Consommer moins de mémoire et de sous-échantillonner/redimensionner(voir la documentation de BitmapOptions#inSampleSize) de l'image.
OriginalL'auteur Samuh
Essayez d'ajouter à votre méthode onDestroy:
Il recycle le bitmap à l'intérieur de votre ImageView.
if != null
vérifier la bd 🙂Il n'est pas nécessaire si vous réglez toujours drawable dans votre onCreate 😉
recycler semble une très ancienne méthode. Est-il nécessaire sur Android 4.0?
Ron & gingo, je vous remercie. Et il est préférable de vérifier si la valeur est null est inclus. Aussi, au retour d'une autre activité, habituellement appareil photo, l'affichage de l'image doit appeler setImageBitmap(null) et destroyDrawingCache() pour afficher la nouvelle image.
OriginalL'auteur gingo
Votre demande doit être fuites contexte. C'est généralement la raison pour laquelle l'application se bloque après plusieurs changements d'orientation. Lire attentivement ce http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html.
OriginalL'auteur Fedor
Vous pouvez également utiliser quelque chose comme ceci:
Lire le lien suivant pour plus d'informations sur le BitmapFactory options (surtout inSampleSize, qui contrôle le degré de sous-échantillonnage): http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
OriginalL'auteur Sebastian Greifeneder