1. Не должно быть проблем с вызовом из другого потока. Это работает отлично, пока я не попытаюсь очистить его, я не думаю, что это проблема. 2. Да, я уверен. На самом деле, даже когда я полностью прекращаю их рисовать после очистки, они все равно мерцают, хотя их там не должно быть. Я уверен, что это не такая проблема
му я пытаюсь очистить Canvas с помощью canvas.drawColor (Color.BLACK), но если я вызову его один раз, дисплей замигает и отобразит старый рисунок, который должен был быть скрыт drawColor.
Вот важные биты моего кода -
// This method is called by a Thread
public void update() {
Canvas canvas = holder.lockCanvas(null);
if (canvas != null) {
onDraw(canvas);
}
holder.unlockCanvasAndPost(canvas);
}
@Override
protected void onDraw(Canvas canvas) {
if (toClear) {
canvas.drawColor(Color.BLACK);
//if this is not set to change back to false, it does not flicker
toClear = false;
}
//Draw some objects that are moving around
}
public void clearScreen() {
// This method is called when the user pressed a button
toClear = true;
}
После поиска в Google, я услышал о двойной буферизации, но пришел к выводу, что lockCanvas () и unlockCanvasAndPost () должны обрабатывать это для меня. Что здесь не так?