J'utilise le code suivant pour afficher le bitmap dans mon ImageView. Lorsque j'essaie de charger une image de taille par exemple supérieure à 1,5 Mo cela me donne une erreur. Quelqu'un me suggère une solution?Comment gérer une erreur de mémoire insuffisante?
try {
URL aURL = new URL(myRemoteImages[val]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = null;
try
{
is= conn.getInputStream();
}catch(IOException e)
{
return 0;
}
int a= conn.getConnectTimeout();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm;
try
{
bm = BitmapFactory.decodeStream(bis);
}catch(Exception ex)
{
bis.close();
is.close();
return 0;
}
bis.close();
is.close();
img.setImageBitmap(bm);
} catch (IOException e) {
return 0;
}
return 1;
chat journal:
06-14 12:03:11.701: ERROR/AndroidRuntime(443): Uncaught handler: thread main exiting due to uncaught exception
06-14 12:03:11.861: ERROR/AndroidRuntime(443): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
06-14 12:03:11.861: ERROR/AndroidRuntime(443): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
Pour éviter des exceptions java.lang.OutOfMemory, vérifier les dimensions d'un bitmap avant le décodage, à moins que vous absolument confiance à la source pour vous fournir des données d'image de taille qui on pouvait s'y attendre confortablement dans la adapte mémoire disponible. BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource (getResources(), R.id.myimage, options); int imageHeight = options.outHauteur; int imageWidth = options.outWidth; Chaîne imageType = options.outMimeType; – hitesh141