It seems that this isn't doable in quite the same way as a double buffering approach.
What I ended up doing is use the postInvalidate(int, int, int, int)
method and build a task queue to draw the elements that have changed. The thing that was really problematic for me was the fact that Android kept deleting the screen, this was actually because we didn't invoke activity.getWindow().setBackgroundDrawable(null);
which we didn't feel with software rendering but causes screen wipes in hardware accelerated rendering.