You draw directly on canvas, ignoring system screen redraw callback. The white screen is caused by system redraw. Try something around this code:
...please note that this code does not work, it's there just to give you the idea about how to do it...
def cb_redraw(dummy=(0, 0, 0, 0)):
''' Overwrite default screen redraw event handler '''
''' Custom screen update routine '''
canvas = appuifw.Canvas(redraw_callback = cb_redraw)
appuifw.app.body = canvas