搭建婚戀系統原始碼,軟體是怎麼顯示在裝置上的
一、概要
婚戀系統原始碼顯示的過程:婚戀系統原始碼呼叫SurfaceFlinger服務把經過測量、佈局和繪製後的Surface渲染到顯示螢幕上。
SurfaceFlinger:android系統服務,負責管理android系統的幀緩衝區,即顯示螢幕。 Surface:android應用的每個視窗對應一個畫布(Canvas),即Surface,可以理解為android婚戀系統原始碼的一個視窗。
婚戀系統原始碼的顯示過程包含了兩個部分(應用側繪製、系統側渲染)、兩個機制(程式間通訊機制、顯示重新整理機制)。
二、應用側繪製
一個android應用程式視窗裡麵包含了很多UI元素,這些元素是以樹形結構來組織的,即它們存在著父子關係,其中,子UI元素位於父UI元素裡面。
因此,在繪製一個婚戀系統原始碼視窗的UI之前,首先要確定裡面的各個子UI元素在父UI元素裡面的大小和位置。確定各個子UI元素在父UI元素裡面的大小以及位置的過程有稱為測量過程和佈局過程。因此,婚戀系統原始碼視窗的UI渲染過程可以分為測量、佈局和繪製三個階段。
測量:遞迴(深度優先)確定所有檢視的大小(寬、高) 佈局:遞迴(深度優先)確定所有檢視的位置(左上角座標) 繪製:在畫布canvas繪製應用程式視窗的所有檢視
三、系統側渲染
android應用程式在圖形緩衝區中繪製好View層次結構後,這個圖形緩衝區會被交給SurfaceFlinger服務,而SurfaceFlinger服務再使用OpenGL圖形庫API來將這個圖形緩衝區渲染到硬體幀緩衝區中。
android影像顯示的底層原理:
CPU:作用是計算圖片的形狀和文字的紋體 GPU:功能是渲染影像的顏色 Display:螢幕顯示影像 Vsync:垂直同步訊號,顯示卡輸出頻率與螢幕重新整理頻率同步的訊號 android影像在繪製的時候,首先是CPU計算出影像形狀,計算完成CPU會將影像交給GPU渲染出顏色,如果這一切都能夠在16ms內完成,那麼在下一個VSync出現時,就能顯示剛剛渲染出來的那一幀影像了。但是如果CPU和GPU處理一幀影像時間超過16ms,那麼這幀影像只能等到第二個VSync出現時才能刷出螢幕,呈現給使用者了,這就意味著使用者在32ms內所看到的是同一幀影像,這就是所謂的掉幀,也就是卡頓了。
四、程式間通訊機制
婚戀系統原始碼為了能夠將自己的UI繪製在系統的幀緩衝區上,它們就必須要與Surface服務進行通訊。 android應用程式與SurfaceFlinger服務是執行在不同的程式中的,因此,它們採用某種程式間通訊機制來進行通訊。由於婚戀系統原始碼在通知SurfaceFlinger服務來繪製自己的UI的時候,需要將UI資料傳遞給SurfaceFlinger服務,例如,要繪製UI的區域、位置等資訊。一個android應用程式可能會有很多個視窗,而每一個視窗都有自己的UI資料,因此,android系統的匿名共享記憶體機制就派上用場了。
每一個android應用程式與SurfaceFlinger服務之間,都會通過一塊匿名共享記憶體來傳遞UI資料。但是單純的匿名共享記憶體在傳遞多個視窗資料時缺乏有效的管理,所以匿名共享記憶體就被抽象為一個更上流的資料結構SharedClient。
在每個SharedClient中,最多有31個SharedBufferStack,每個SharedBufferStack都對應一個Surface,即一個視窗。一個SharedClient對應一個android應用程式,而一個android應用程式可能包含多個視窗,但至多可以包含31個視窗。每個SharedBufferStack中又包含了N個緩衝區(android4.1以下,N = 2,4.1以上,N = 3),即顯示重新整理機制中即將提到的雙緩衝和三緩衝技術。
五、顯示重新整理機制
一般婚戀系統原始碼在繪製UI的時候,都會採用一種稱為“雙緩衝”的技術。雙緩衝意味著要使用兩個緩衝區,其中一個被稱為Front Buffer,另外一個被稱為Back Buffer。UI總是先在Back Buffer中繪製,然後再和Front Buffer交換,渲染到顯示裝置中。在android4.1中引入了VSync,這類似於時鐘中斷,每收到VSync中斷,CPU就開始處理各幀資料。
宣告:本文由雲豹科技轉發自Android_XG部落格,如有侵權請聯絡作者刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982461/viewspace-2845466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AI在婚戀領域是怎麼起作用的?AI
- mac系統桌面怎麼顯示CD圖示等裝置?Mac
- 婚戀交友原始碼是如何與MySQL打交道的?原始碼MySql
- 婚戀系統原始碼,如何成功獲取使用者的定位原始碼
- win10安裝軟體出現亂碼怎麼辦?win10系統新裝軟體顯示亂碼的解決方法Win10
- 紋理是怎樣顯示在模型上的模型
- win10系統中文軟體顯示亂碼怎麼回事_win10安裝中文軟體出現亂碼解決教程Win10
- lsusb命令-在系統中顯示有關USB裝置資訊
- win10新裝軟體亂碼怎麼解決_win10新裝軟體顯示亂碼的解決方案Win10
- Win10系統怎麼在工作管理員顯示顯示卡溫度Win10
- 什麼是saas教育系統軟體?它和線上教育系統原始碼有何不同?原始碼
- win10系統顯示你的電腦或移動裝置不支援Miracast怎麼辦Win10AST
- 夢幻婚戀交友app系統原始碼影片聊天直播過程加密原生開發APP原始碼加密
- win10 itunes隱藏裝置後怎麼顯示_win10 itunes隱藏裝置後如何顯示Win10
- 在婚戀app原始碼開發中,如何實現滑動驗證碼元件?APP原始碼元件
- win10系統中顯示無法找到輸出聲音裝置怎麼處理Win10
- Magic Battery Mini Mac(藍芽裝置電量顯示軟體)BATMac藍芽
- Win10系統驅動裝不上顯示Wnidows無法啟動這個硬體裝置程式碼19如何解決Win10
- win10系統下裝置管理器驅動顯示感嘆號怎麼解決Win10
- 線上直播系統原始碼,平臺彈窗自適應裝置原始碼
- w10裝不了顯示卡驅動怎麼辦_重灌系統w10顯示卡驅動裝不上處理方法
- 如何實現婚戀app原始碼中元素水平垂直居中?APP原始碼
- 設定顯示裝置
- 在 Android 裝置上搭建 Web 伺服器AndroidWeb伺服器
- 直播app系統原始碼,固定速度的進度條顯示APP原始碼
- win10軟體安裝不上怎麼辦_window10系統安裝不了軟體處理方法Win10
- 關於一對一軟體如何搭建PHP直播系統原始碼的流程PHP原始碼
- win10系統下AMD顯示卡驅動怎麼安裝Win10
- Mac如何解除安裝系統自帶軟體?macbook系統軟體怎麼刪除?Mac
- 線上直播系統原始碼,實現搜尋後介面顯示商品列表效果原始碼
- 如何實現婚戀app原始碼移動端網頁特效?APP原始碼網頁特效
- 婚戀app原始碼開發,如何實現介面效能優化?APP原始碼優化
- 婚戀app原始碼開發,值得一看的前端加密方法APP原始碼前端加密
- win10系統怎麼清除軟體 膝上型電腦win10系統怎麼解除安裝軟體Win10
- 什麼是線上教學系統原始碼?包含哪些功能?原始碼
- 線上教學系統原始碼是什麼?有何用處?原始碼
- windows10系統怎麼刪除不用的裝置Windows
- 直播app系統原始碼,Fragment 顯示 隱藏 監聽APP原始碼Fragment