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 () должны обрабатывать это для меня. Что здесь не так?

Ответы на вопрос(3)

Ваш ответ на вопрос