我正在實現一個SurfaceView子類,我在其中運行一個單獨的線程以繪製到SurfaceHolders畫布上。 我打電話給lockCanvas()
之前和之後的時間,我從約70毫秒到100毫秒。 有沒有人可以指出爲什麼我會得到如此高的時間? 下面的代碼的相關部分:爲什麼lockCanvas()很慢?
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);
}
}
好的,謝謝。我已經閱讀過,並理解了這些概念。但我還沒有找到解決辦法。即使我刪除了'synchronized'塊(這是不推薦的),它並沒有幫助我。仍然那些高時間。 – kaneda 2011-05-16 12:44:29