Colocar imagem de fundo usando Canvas no Android

Olá, Estou aprendendo sobre canvas agora e estou com um problema. Estou criando um joguinho e preciso colocar uma imagem como plano de fundo no jogo. Li algumas coisas na internet e tentei fazer mas quando abro a aplicação no lugar que deveria ter a imagem está tudo preto. Meu código:

Pista.java:

public class Pista extends SurfaceView  implements Runnable{

Canvas canvas;
Bitmap imagemFundo;
SurfaceHolder surfaceHolder;

public Pista(Context context, AttributeSet attrs) {
    super(context,attrs);
    surfaceHolder = getHolder();
    imagemFundo = BitmapFactory.decodeResource(getResources(), R.drawable.pista);
}

@Override
protected void onDraw(Canvas c){
    canvas.drawBitmap(imagemFundo,0,0,null);
  }

}

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.cea436.amanda.freeway.MainActivity">

    <com.cea436.amanda.freeway.Pista
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
}

Pra atualizar um canvas, você precisa chamar o método do SurfaceHolder:

this.surfaceHolder.unlockCanvasAndPost(canvas);