SurfaceFlinger与Surface概述
?
基本原理:
SF一個(gè)Client對應(yīng)一個(gè)app中的SurfaceComposerClient, 分別是Binder的n端和b端,主要用來CreateSurface
一個(gè)app中有多個(gè)Activity,一個(gè)Activity一般有一個(gè)Surface(除SurfaceView,一個(gè)View就有一個(gè)Surface),這個(gè)Acitivity所有View都是畫在這個(gè)Surface上的。
App中的每個(gè)Surface對應(yīng)SF中的每個(gè)Layer,因?yàn)镾F為App創(chuàng)建Surface的時(shí)候,同時(shí)在SF端創(chuàng)建一個(gè)Layer。
Layer里面有個(gè)一個(gè)BufferQueue,對應(yīng)Surface中的一個(gè)mGraphicBufferProducer,分別是Binder中的n端和b端。主要方法是dequeueBuffer和queueBuffer,當(dāng)app需要在surface上畫圖時(shí),dequeueBuffer申請一個(gè)緩存,寫入,然后queueBuffer送出緩存并且通知SF來合成。
可以注意到,QueueBuffer和Surface都有一個(gè)BufferSlot數(shù)組,里面Buffer順序是同步的,兩個(gè)數(shù)組對應(yīng)每一個(gè)元素指向同一個(gè)數(shù)據(jù),這個(gè)數(shù)據(jù)也就是GraphicBuffer,應(yīng)為這兩個(gè)數(shù)組各自在兩個(gè)進(jìn)程中,所以這里是通過內(nèi)存共享來實(shí)現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/hushpa/p/6530905.html
總結(jié)
以上是生活随笔為你收集整理的SurfaceFlinger与Surface概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone 卸载应用后储存空间没有增加
- 下一篇: iPhone 连接电脑后,点击“信任”没