How do I draw to a buffer and, when ready, dump all that to the screen? And preferably I would want to keep drawing to the buffer without it being clearing. The lockCanvas() and unlockCanvasAndPost(c) clear the buffer - I assume this is used more for animation where you draw each frame over and over again. I just want to keep drawing and take care of the update and clearing myself when I feel that is needed.

I dont know if this is the most efficient way, but you could create two bitmaps and double buffer using them. Your painting thread could paint one bitmap while you draw to the others canvas, then swap when you want to update the screen.