Thanks for your response.
I was experiencing a very interesting behavior. I started using a custom
view inside a framelayout, and performed all the primitive operations and
called invalidate() to let the system call onDraw. It was choking. I even
tried to invalidate a rect, but it was just not fast enough - the 2nd view
that was requesting the underlying view to redraw certain primitives based
on the actions on the 2nd view was not responsive. I then started using the
SurfaceView to see if there is any benefit for the same operation - and
voila - it worked like a charm. This is why is used SurfaceView as a
substitute - there was an apparent performance benefit.
That said, I'm going to take another look at my hierarchy, and all the
custom views (there are quite a few), to make sure there are no other
leaks. Like you said, I would rather use a View instead of SurfaceView.
Thanks for your input though - it does answer the question that I can use a
canvas with TextureView if i follow the intended mode of use.