Game Entwicklung - lockCanvas() unregelmäßig langsam

  • Antworten:2
SolarTurtle
  • Forum-Beiträge: 2

19.03.2014, 18:38:48 via Website

Hallo,

ich programmiere zurzeit ein Spiel. Es funktioniert auch alles wie geplant. Nur bekomme ich in wirklich unregelmäßigen Abständen ein Ruckeln.
Den Garbage Collector kann ich auf jeden Fall ausschließen, selbst wenn ich jeglichen Code rauslasse und quasi nur einen schwarzen Bildschirm anzeigen lasse, dann messe ich die unregelmäßigen Zeitenpeaks. Als ist wirklich zum verzweifeln.

Die deltaTimes zwischen den Frames sieht so aus:


Man sieht darin wirklich gut das die Berechnungen und die draw Methoden effizient arbeiten und es prinzipiell sehr flüssig läuft. Alle kleinen Grafiken sind png8 optimiert und der Hintergrund ist nur eine Farbfläche. Das habe ich alles schon ausprobiert.

Es liegt also definitiv in diesem Codestück:
1Canvas canvas = holder.lockCanvas();
2 canvas.getClipBounds(dstRect);
3 canvas.drawBitmap(framebuffer, null, dstRect, null);
4 holder.unlockCanvasAndPost(canvas);

Hatte den jemand von euch schonmal solch ein Problem und konnte es lösen? Es liegt ja sicher auch nicht daran das es kein OpenGL ist, sondern nur die Canvasmethode. Ich mein zwischen den Peaks funktioniert es ja wunderbar.
Könnten es auch Services sein von anderen Apps die kurzfristig das Handy aufhalten?

Vielen Dank für eure Hilfe.

SolarTurtle

Antworten
impjor
  • Forum-Beiträge: 1.793

19.03.2014, 20:08:09 via App

Sieht eigentlich nach dem GC aus, benutzte mal die Profiling Methoden aus dem DDMS, wenn du die App ausführst.
Vielleicht magst du nochmal die komplette Draw-Methode zeigen, wenn sonst nichts relevantes gemacht wird.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
SolarTurtle
  • Forum-Beiträge: 2

20.03.2014, 11:11:43 via Website

Also ich hab es lange ja beobachtet. Der GC für meine App kommt nur sehr selten, vll 1x in 5min. Manchmal, so scheint es, startet ein GC, aber wohl allgemein. Kann das sein?

Anhang der Profiling Methoden kam ich auf dieses Codestück. Ansonsten ist es halt schwer damit, da es ja sehr unregelmäßig vorkommt und der Profiler die Timings der Methoden mittelt.

Ich frage mich ob ich das Problem weiterhin habe wenn ich die App auf OpenGL umbaue?

Vielen Dank und beste Grüße

SolarTurtle

Antworten