Activity 连接 SurfaceFlinger
SurfaceSession持有SurfaceComposerClient
紧接这上面段落继续跟踪SurfaceComposerClient,我们从Activity 连接 SurfaceFlinge(一)知道,在addWindow的时候都会去重新创建一个Session去和SurfaceFlinger进行连接,在Session的构造函数里面就会去new SurfaceComposerClient,Session持有SurfaceComposerClient的对象。
那么这个SurfaceComposerClient到底是什么东东呢?
前面一直强调SurfaceComposerClient是SurfaceFlinger的远端代理,应用和SurfaceFlinger之间的交互基本都有经过SurfaceComposerClient。其实是SurfaceComposerClient被创建的时候都会去通过ComposerService的getComposerService方法返回SurfaceFlinger并且调用SurfaceFlinger的createConnection()去获得,ISurfaceComposerClient的client端。具体见下面类图
经过上面我只需要知道目前SurfaceSession持有了SurfaceComposerClient的对象,并且后面会调用这个对象里面的createSurface()方法,让SurfaceFlinger给创建真正的Surface。