Назначение синхронизированного блока после вызова lockCanvas ()? - PullRequest
0 голосов
/ 01 мая 2020

Я близок к рисованию графики на холсте в Android, но запутался:

try { 
c = panel_thread.getHolder().lockCanvas(null);
synchronized (panel_thread.getHolder()) {
    panel_thread.update();
    panel_thread.onDraw(c);
}

}

Как объяснено в этом ответе:

Причина, по которой он называется lockCanvas (), заключается в том, что до тех пор, пока вы не вызовете unlockCanvasAndPost (), никакой другой код не сможет вызывать lockCanvas () и записывать данные на поверхность, пока ваш код не будет завершен.

Метод lockCanvas, по-видимому, удостоверяется, что никакой другой поток dr aws на нем не вызывается до тех пор, пока не будет вызван unlockCanvasAndPost .

Это также указано в указанном ответе:

без синхронизированного блока, несколько потоков могут рисовать графику одновременно

Но если lockCanvas уже сделал записи в Canvas потоко-безопасными, то что это за цель синхронизации блока кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...