android渲染緩存 android渲染流程

Android圖形渲染原理上

1、CPU負(fù)責(zé)計(jì)算需要渲染的數(shù)據(jù),把計(jì)算好的數(shù)據(jù)交給GPU,GPU會(huì)對(duì)圖形數(shù)據(jù)進(jìn)行渲染,渲染好后放到buffer(圖像緩沖區(qū))里存起來(lái),然后Display(屏幕或顯示器)負(fù)責(zé)把buffer里的數(shù)據(jù)呈現(xiàn)到屏幕上。

成都創(chuàng)新互聯(lián)公司成立十年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名與空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)公司通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

2、最底層是圖形硬件(GPU);上層是Metal和CoreGraphics,提供一些接口來(lái)訪問(wèn)GPU;再上層的CoreAnimation是OpenGL ES和Metal在窗口顯示的載體,在此基礎(chǔ)上封裝了一套動(dòng)畫的API。最上面的UIKit屬于應(yīng)用層,處理與用戶的交互。

3、 Flutter在Android平臺(tái)上也是直接渲染到Surface。例如:一個(gè)Activity/Dialog都是一個(gè)Surface,它承載了上層的圖形數(shù)據(jù),與SurfaceFlinger側(cè)的Layer相對(duì)應(yīng)。Canvas(畫布)實(shí)現(xiàn)由 Skia 圖形庫(kù)提供。

4、文件:/ frameworks / base / core / jni / android_view_ThreadedRenderer.cpp 能看到實(shí)際上就是調(diào)用RenderProxy的setName方法給當(dāng)前硬件渲染對(duì)象設(shè)置名字。

android屏幕刷新和緩存機(jī)制

1、先總體概括一下,Android屏幕刷新使用的是“雙緩存+VSync機(jī)制”,單純的雙緩沖模式容易造成jank(丟幀)現(xiàn)象,為了解決這個(gè)問(wèn)題,Google在 Android1 提出了Project Butter(油工程),引入了 drawing with VSync 的概念。

2、Android 的顯示過(guò)程可以簡(jiǎn)單概括為:應(yīng)用程序把經(jīng)過(guò) measure(測(cè)量)、layout(布局)、draw(繪制)后的 surface 緩存數(shù)據(jù),通過(guò) SurfaceFlinger 把數(shù)據(jù)渲染到顯示屏幕上,通過(guò) Android 的刷新機(jī)制來(lái)刷新數(shù)據(jù)。

3、二級(jí)緩存工作機(jī)制。所謂二級(jí)緩存實(shí)際上并不復(fù)雜,當(dāng)Android端需要獲得數(shù)據(jù)時(shí)比如獲取網(wǎng)絡(luò)中的圖片,我們首先從內(nèi)存中查找(按鍵查找),內(nèi)存中沒(méi)有的再?gòu)拇疟P文件或sqlite中去查找,若磁盤中也沒(méi)有才通過(guò)網(wǎng)絡(luò)獲取。

Android:深入剖析圖片加載庫(kù)Glide緩存功能(源碼分析)

1、源碼分析如下:若上述兩個(gè)方法都沒(méi)獲取到緩存圖片時(shí)(即內(nèi)存緩存里沒(méi)有該圖片的緩存),就開啟新線程加載圖片。

2、ResourcesCacheGenerator 獲取的是轉(zhuǎn)換過(guò)的緩存數(shù)據(jù); SourceGenerator 獲取的是未經(jīng)轉(zhuǎn)換的原始的緩存數(shù)據(jù); DataCacheGenerator 是通過(guò)網(wǎng)絡(luò)獲取圖片數(shù)據(jù)再按照按照緩存策略的不同去緩存不同的圖片到磁盤上。

3、內(nèi)存緩存 本地緩存 網(wǎng)絡(luò)緩存 其中,內(nèi)存緩存應(yīng)優(yōu)先加載,它速度最快;本地緩存次優(yōu)先加載,它速度也快;網(wǎng)絡(luò)緩存不應(yīng)該優(yōu)先加載,它走網(wǎng)絡(luò),速度慢且耗流量。

4、解決辦法: 這是Glide強(qiáng)大的緩存帶來(lái)的副作用,我們可以在RequestOptions中加入.diskCacheStrategy(DiskCacheStrategy.NONE).skipMemoryCache(true)的選項(xiàng)。

5、Glide四級(jí)緩存:先找內(nèi)存,再找文件 1)活動(dòng)緩存(活動(dòng)資源):ActiveResource,里邊使用一個(gè)弱引用weakHashMap來(lái)保存正在使用的圖片,當(dāng)我們加載圖片的時(shí)候,先從activeResource里邊去查找,如果找不到的話就從內(nèi)存緩存里查找。

分享題目:android渲染緩存 android渲染流程
文章地址:http://bm7419.com/article48/dihhphp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、定制網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)