Ich habe mein Profiling gemacht und es scheint, dass die meiste Zeit in drawBitmap verbracht wird, die (verständlicherweise) auf jedem Frame aufgerufen wird.So optimieren Sie Canvas-Zeichnung - DrawBitmap auf Android?
Ich benutze SurfaceView/Aktualisierung Thread/Leinwand Verriegelung Ansatz wie in LunarLander Probe gezeigt. Aber ich habe mich verändert es (nach this question) in Bezug auf
- auf dem ersten Frame konstruieren einen Puffer Bitmap und malen auf sie
- jeden nachfolgenden Rahmen malen Wiederverwendung dass Bitmap (nicht alles auf meinem Bildschirm ändert)
- am Ende jedes Rahmens malen den Puffer einmal in das Ziel-Leinwand (auf dem Bildschirm)
Traceview hat mir gezeigt, dass diese DrawBitmap 5ms für jeden Frame auf meinem 800x480 Gerät nimmt. Kann ich besser werden oder ist es nur etwas, das in den Stein gemeißelt wird, und ich muss nur andere Teile des Codes optimieren, um gute Bilder pro Sekunde zu erzielen?
Können Sie jeden Frame Spur des schmutzigen Rechteck halten und nur das aktualisieren? Offensichtlich hilft dir das nicht viel, wenn du ein wenig oben links und unten rechts wechselst. – EboMike
OpenGL wird wahrscheinlich eine bessere Wahl für Sie sein. Ich habe viele Tests auf Handys und Tablets durchgeführt und drawBitmap() ist einfach zu langsam, hauptsächlich auf Tablets. Hier sind jedoch einige Optionen für Sie: http://www.independent-software.com/android-speeding-up-canvas-drawbitmap/ –