我想了解android.graphics package
和SurfaceFlinger
之间的关系。
基于Android Graphics Documentation,有两种绘制2D图形的方法。一个是使用VIEW对象,另一个是直接绘制到Canvas。当我从文档中读到时,当直接绘制到Canvas时,可以创建一个管理SurfaceView
的线程,该线程链接到SurfaceFlinger
。我还在代码中注意到android.graphics
包只是SKIA库的包装器。使用JNI调用SKIA函数。所以,我无法确定调用是否仍然转到SurfaceFlinger。
这是否意味着将View对象用于简单的2D图形时,不需要SurfaceFlinger?或者在屏幕上绘制任何类型的图形时总是使用Surfaceflinger?有什么输入吗?
答案 0 :(得分:1)
我的另一篇文章已回答了这个问题。
根据@hackbod(我在进一步分析源代码时也证明了这一点),
SurfaceFlinger不是绘制窗口的东西。它为您的窗口分配一个帧缓冲区,在您的应用程序中运行的框架直接绘制,而不与SurfaceFlinger交互。绘制窗口时,SurfaceFlinger所涉及的唯一交互是在绘制完框架后将最终的新帧缓冲区合成到屏幕上。