Limpando a tela com Canvas.drawColor ()

Estou tentando alterar a imagem de plano de fundo de uma exibição personalizada com algum sucesso. a imagem mudará, mas o problema é que ainda vejo vestígios da imagem antiga. quando tento limpar a tela antes de desenhar a nova imagem, ela não parece funcionar. eu crio um bitmap para armazenar a imagem. ao alterar a imagem, chamo de Canvas.drawColor () antes de desenhar a nova imagem, mas a imagem antiga persiste. Eu tentei drawColor (0), drawColor (Color.BLACK), c.drawColor (0, PorterDuff.Mode.CLEAR) e nenhum dos trabalhos acima. como tal, tive que publicá-lo para análise de mentes mais experientes que a minha.

o código real é o seguinte:

private int bgnd;
private boolean switching;

public void setBgnd(int incoming){
    switching = true;
    switch (incoming){

    case R.drawable.image1:
        bgnd = incoming;
        this.invalidate();
        break;

    case R.drawable.image2:
        bgnd = incoming;
        this.invalidate();
        break;

    }
}



protected void onDraw(Canvas c){
    if(switching == true){
        Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd);
        c.drawColor(0, PorterDuff.Mode.CLEAR);
        c.drawBitmap(b, 0, 0, null);
        switching = false;

    }else{
        Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd);
        c.drawBitmap(b, 0, 0, null);
    }
}

questionAnswers(4)

yourAnswerToTheQuestion