Problème OutOfMemoryError avec des Bitmap sur Android
Bonjour,
Je suis actuellement en train de développer une application android permettant de tracer des lignes sur un plan quadriller. Seulement après avoir tracer ces lignes j'effectue une sauvegarde de mon plan, après rechargement de celui ci, des fois le message suivant apparaît :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
05-13 15:29:53.831: E/AndroidRuntime(5074): FATAL EXCEPTION: main
05-13 15:29:53.831: E/AndroidRuntime(5074): java.lang.OutOfMemoryError
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.graphics.Bitmap.nativeCreate(Native Method)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.graphics.Bitmap.createBitmap(Bitmap.java:640)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
05-13 15:29:53.831: E/AndroidRuntime(5074): at com.example.ligne.indoor.Source.drawSource(Source.java:158)
05-13 15:29:53.831: E/AndroidRuntime(5074): at com.example.ligne.indoor.PlanSimulation.draw(PlanSimulation.java:103)
05-13 15:29:53.831: E/AndroidRuntime(5074): at com.example.ligne.indoor.Floor.draw(Floor.java:128)
05-13 15:29:53.831: E/AndroidRuntime(5074): at com.example.ligne.indoor.Plan.onDraw(Plan.java:364)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.view.View.draw(View.java:13776)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.view.View.getDisplayList(View.java:12727)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.view.View.getDisplayList(View.java:12771)
05-13 15:29:53.831: E/AndroidRuntime(5074): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3205) |
on m'indique donc des erreurs à chaque fois au niveau des bitmaps, par exemple pour Plan.onDraw
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
protected void onDraw(Canvas canvas) {
canvas.save();
paint.setStyle(Style.FILL_AND_STROKE);
Bitmap tmp = drawEchelle();
Bitmap ori = drawOrigin();
if (ori != null)
canvas.drawBitmap(ori, 0, 0, paint);
if (tmp != null)
canvas.drawBitmap(tmp, 0, 0, paint);
currentFloor.draw(getWidth(), getHeight());
canvas.drawBitmap(currentFloor.getBitmap(), 0, 0, paint);
} |
Je ne sais pas comment éviter ce problème, si quelqu'un a des idées ?