Hallo [Blockierte Grafik: https://www.androidpit.de/img/emoticons3/smile.png]
ich weiß dieses Problem gibts wahrscheinlich oft wenn man mit Bitmaps arbeitet und hab auch schon Lösungsanstätze gefunden doch bei mir klappt das irgendwie nicht so wie erhofft:
erstmal zum Code
Bitmap erzeugung:
java class trapViews:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int x = 20;
Random r = new Random();
int i1 = r.nextInt(900 - 200) + 200;
rnd = new Random();
//Linke Seite
System.gc();
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.stachelnstart);
Bitmap resizedBitmap = Bitmap.createScaledBitmap(image, i1, 300, true);
float left = (float) 0;
float top = (float) (getHeight() - resizedBitmap.getHeight());
canvas.drawBitmap(resizedBitmap, left, top, paint);
//rechte Seite
Bitmap images = BitmapFactory.decodeResource(getResources(), R.drawable.stachelnstart1);
Bitmap resizedBitmaps = Bitmap.createScaledBitmap(images, getWidth()-resizedBitmap.getWidth()-OwlHole, 300, true);
float left1 = (float) (getWidth() - resizedBitmaps.getWidth());
float top1 = (float) (getHeight() - resizedBitmaps.getHeight());
canvas.drawBitmap(resizedBitmaps, left1, top1, paint);
}
}
Alles anzeigen
erzeugt auf der rechten sowie linken seite jeweils 1 mal das Bitmap stachelnstart^^
dies wird jz alle 5 sec durch einen handler in meiner MainActivity aufgerufen:
final Handler h = new Handler();
Runnable r = new Runnable()
{
public void run()
{
System.gc();
traps();
h.postDelayed(this,5000);//Handler neustarten
}
};
private void traps() {
container = (ViewGroup) findViewById(R.id.container);
trapViews tv = new trapViews(this);
container.addView(tv,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
//tV.setImageCount(8);
h.postDelayed(r,5000);
}
Alles anzeigen
es macht das was es machen soll nämlich wird alle 5 sec rechts und links mit einer zufälligen Länge ein Bitmap produziert. Doch schon beim ersten durchlauf hängt die app kurz dann wirds produziert und das wird von mal zu mal schlimmer bis Sie abstürzt und den Fehler java.lang.OutOfMemoryError: Failed to allocate a 916812 byte allocation with 267632 free bytes and 261KB until OOM anzeigt.
Im Code hab ich den Garbage Collecter (System.gc()) verwendet was aber genauso wenig hilft wie image.recycle();
hat hierfür jemand eine lösung?
übrigens https://developer.android.com/…d-bitmap.html#load-bitmap hab ich mir durchgelesen und ausprobiert aber hat auch nicht so geklappt wie ich mir das vorgestellt habe
Vielen Danke schonmal im Vorraus
Grüße Hendrix [Blockierte Grafik: https://www.androidpit.de/img/emoticons3/smile.png]