🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
这里,先总结一下前面讲解中和Surface有关的流程: - 在ViewRoot构造时,会创建一个Surface,它使用无参构造函数,代码如下所示: ~~~ private final Surface mSurface = new Surface(); ~~~ - ViewRoot通过IWindowSession和WMS交互,而WMS中会调用的一个attach函数,会构造一个SurfaceSession,代码如下所示: ~~~ void windowAddedLocked() { if(mSurfaceSession == null) { mSurfaceSession = new SurfaceSession(); mNumWindow++; } } ~~~ - ViewRoot在performTransval的处理过程中会调用IWindowSession的relayout函数。这个函数还没有分析。 - ViewRoot调用Surface的lockCanvas,得到一块画布。 - ViewRoot调用Surface的unlockCanvasAndPost释放这块画布。 这里从relayout函数开始分析,来看。