上图是实现SurfaceView绘图的框架。我们需要实现的是长横线以下的部分。
对这个框架作一个说明:
回调的典型作用是实现控制反转,即事先预定好框架,在SurfaceView.java的updateWindow()函数中,根据实际情况,系统会调用SurfaceHolder.Callback.surfaceCreated(mSurfaceHolder)等。这只是一个框架,在没有实现的SurfaceHolder.Callback接口中,surfaceCreated()等函数没有作任何操作。等我们实现了这个接口之后,系统对这个接口函数的调用才有了实际的意义。
这也是回调的意义所在,框架师事先定好框架,但不定义任何内容,这样系统调用没有任何意义,程序员根据不同的情况给框架中填充不同的内容后,系统调用就有了实际意义,也产生了不同的实现。
通过上图,我们也可以了解,真正画图的操作是在SurfaceHolder.callback中实现的(callback运行小线程,真正的画图在小线程中实现)。