看源碼View.java
上圖,draw方法會調用onDraw。
ViewRootImpl.java中
如果是軟件繪制的話,drawSoftWare方法會調用view.draw()方法。
從上圖中可以看到canvas來源於mSurface.lockCanvas。這裏會調用到native層,簡單點說就是去申請了壹塊buffer。這個時候canvas就可以用了,接下來就會調用view.draw方法。
具體點的過程自己可以去看看。