双屏异显
系统提供了Presentation类,可以实现在两块屏幕上同时显示不同的内容;Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕。
image.png
基本原理
image.png
1 获得显示设备信息:
DisplayManagerService 启动后从SurfaceFlinger当中获取到系统默认的Display 与HDMI display的信息。
2 应用程序端指定其应用ContextImpl的Display。
3 应用程序获得Surface和配置Surface,这个surface对应于SurfaceFlinger中的Layer;
WindowManagerService作为一个系统服务,主要管理系统中所有的应用的Window。在WMS中,每个Window都有一个对应的WindowState对象。
3.1 addWindow,该函数在WindowManagerService当中,由WindowManagerImpl中的addView函数调用到,并且将Window所在的Display作为参数带到WMS当中。
3.2在addWindow函数,WMS首先找到窗口所在的Display,创建WindowState,然后将窗口加到Display中的Windowlist当中。win.mToken.addWindow(win);
3.3 WindowState,获取对应Display的layerstack将其放置在WindowStateAnimator当中,并且将值设置到Surfac