Basically, I have a gameView class, which extends Surfaceview, it has a surfaceCreated method, which runs a thread and draws stuff onto a canvas. This gameView gets loaded from a GameActivity, with setContentView(gameView). On the gameView, I have a touch event, so that when you touch the screen you get navigated to another activity xml layout. Basically, when you touch the canvas drawing another screen pops up. On this new, intermediate screen I have a button which when you click it, it takes you back to the gameView. My problem is that when it takes you back to the gameView, the canvas drawing has been reset, it seems that the surfaceCreated method is called each time with setContentView(gameView). So my question is how can I save the gameView, its state and its canvas drawing, so that when I navigate to another activity but come back and load the gameView again, the state will still be there, and it will redraw what it had?