我已接近在Android的Canvas上绘制图形,但感到困惑:
try {
c = panel_thread.getHolder().lockCanvas(null);
synchronized (panel_thread.getHolder()) {
panel_thread.update();
panel_thread.onDraw(c);
}
}
如this答案中所述:
之所以将其称为lockCanvas(),是因为直到您调用unlockCanvasAndPost()之前,没有其他代码可以调用lockCanvas()并写入表面,直到您的代码完成为止。
lockCanvas方法似乎可以确保在调用 unlockCanvasAndPost 之前不会在其上绘制其他线程。
在回答中也对此进行了说明:
没有同步块,多个线程可以同时绘制图形
但是,如果 lockCanvas 已经编写了Canvas线程安全的著作,那么使代码块同步的目的是什么?