Почему lockCanvas () работает медленно?

Я реализую подкласс SurfaceView, в котором я запускаю отдельный поток для рисования на холсте SurfaceHolders. Я измеряю время до и после вызова lockCanvas () , и получаю от 70 мс до 100 мс. Кто-нибудь может указать мне, почему у меня такие высокие тайминги? Вот соответствующая часть кода:

public class TestView extends SurfaceView implements SurfaceHolder.Callback {

....

boolean created;
public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {

   mThread = new DrawingThread(mHolder, true);
   mThread.onWindowResize(width, height);
   mThread.start();
}

public void surfaceCreated(SurfaceHolder holder) {

    created = true;
}

public void surfaceDestroyed(SurfaceHolder holder) {
    created = false;

}
class DrawingThread extends Thread {
public void run() {
while(created) {



            Canvas canvas = null;
            try {
                            long t0 = System.currentTimeMillis();
            canvas = holder.lockCanvas(null);
            long t1 = System.currentTimeMillis();
                            Log.i(TAG, "Timing: " + ( t1 - t0) );
            } finally {
                holder.unlockCanvasAndPost(canvas);
            }
}
8
задан kaneda 16 May 2011 в 07:11
поделиться