本申請涉及網(wǎng)絡(luò)引擎技術(shù),具體涉及一種網(wǎng)絡(luò)引擎啟動方法。本申請同時涉及一種網(wǎng)絡(luò)引擎啟動裝置。
背景技術(shù):
個人電腦、智能手機(jī)等終端設(shè)備已經(jīng)成為了人們?nèi)粘I畹闹匾M成部分。用戶通??梢酝ㄟ^點(diǎn)擊圖標(biāo)或者按鍵等方式,啟動瀏覽器或者webapp(基于web的應(yīng)用),以實(shí)現(xiàn)所需的功能。瀏覽器或者webapp通常需要啟動webengine(網(wǎng)絡(luò)引擎),由webengine根據(jù)從服務(wù)器端返回的html、xml或者image等資源,進(jìn)行頁面渲染并在顯示設(shè)備上輸出,以呈現(xiàn)給用戶。
webengine的啟動過程通常包括:下載網(wǎng)絡(luò)資源,將獲取的網(wǎng)頁文檔轉(zhuǎn)換為domtree,隨后構(gòu)造用于渲染domtree的渲染樹(rendertree),并對渲染樹的每個節(jié)點(diǎn)進(jìn)行布局處理,確定其在屏幕上的顯示位置,最后遍歷渲染樹將每個節(jié)點(diǎn)繪制到圖形緩沖區(qū)中,并通知提供顯示服務(wù)的模塊(通常稱為顯示系統(tǒng)或者圖形系統(tǒng))將圖形緩沖區(qū)中的數(shù)據(jù)渲染輸出到顯示設(shè)備的硬件緩沖區(qū)中,從而完成頁面內(nèi)容的呈現(xiàn)。
由于webengine的啟動過程需要執(zhí)行上述操作,因此通常比較耗時,一般在300ms以上,也就是說從用戶執(zhí)行啟動webapp或者瀏覽器的操作,到頁面內(nèi)容顯示出來的這段時間內(nèi),屏幕上通常沒有內(nèi)容顯示,可能導(dǎo)致用戶認(rèn)為輸入操作沒有得到任何反饋,甚至可能重復(fù)執(zhí)行相同的操作,影響用戶的使用體驗(yàn)。
針對這一問題,有的終端設(shè)備在啟動webengine的同時,采用一個額外的獨(dú)立窗口專門用于顯示過渡動畫,例如:采用android系統(tǒng)的智能手機(jī)通過窗口管理進(jìn)程進(jìn)行過渡動畫的展示。采用這種方式,對于整個系統(tǒng)來說,由于過渡動畫的顯示占用了額外的緩沖區(qū),從而增大內(nèi)存開銷。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例提供一種網(wǎng)絡(luò)引擎啟動方法,以解決現(xiàn)有的網(wǎng)絡(luò)引擎啟動方式在顯示過渡動畫時需要占用額外緩沖區(qū)的問題。本申請實(shí)施例還提供一種網(wǎng)絡(luò)引擎啟動裝置。
本申請?zhí)峁┮环N網(wǎng)絡(luò)引擎啟動方法,包括:
顯示過渡圖像;
啟動網(wǎng)絡(luò)引擎,顯示頁面內(nèi)容;
其中,所述網(wǎng)絡(luò)引擎在顯示頁面內(nèi)容時,復(fù)用顯示過渡圖像所使用的圖形緩沖區(qū),所述圖形緩沖區(qū)用于存儲供顯示服務(wù)模塊顯示輸出的用戶界面數(shù)據(jù)。
可選的,所述顯示過渡圖像包括:采用動畫方式顯示過渡圖像。
可選的,所述動畫方式包括以下任意一種或者組合:漸變透明度、漸變尺寸伸縮、移動、旋轉(zhuǎn)。
可選的,所述獲取并顯示過渡圖像的步驟和所述啟動網(wǎng)絡(luò)引擎顯示頁面內(nèi)容的步驟,分別在應(yīng)用程序進(jìn)程的不同線程中異步實(shí)施。
可選的,所述顯示過渡圖像包括:
獲取過渡圖像文件;
通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
讀取所述過渡圖像文件并執(zhí)行解碼操作;
將解碼得到的數(shù)據(jù)寫入所述圖形緩沖區(qū)中,以顯示所述過渡圖像。
可選的,當(dāng)所述方法由啟動webapp的指令觸發(fā)時,所述過渡圖像文件的獲取方式包括:根據(jù)webapp的配置文件中指定的路徑獲取。
可選的,當(dāng)所述方法由啟動瀏覽器的指令觸發(fā)時,所述過渡圖像文件的獲取方式包括:根據(jù)預(yù)先設(shè)定的路徑獲取。
可選的,所述通過向圖形緩沖區(qū)管理模塊申請的方式獲取圖形緩沖區(qū)的步驟,以及所述顯示過渡圖像所包含的其他步驟,分別在不同的線程中實(shí)施。
可選的,所述顯示過渡圖像包括:
通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
按照預(yù)設(shè)的顏色方案向所述圖形緩沖區(qū)中寫入數(shù)據(jù),以顯示對應(yīng)于所述顏色方案的過渡圖像。
可選的,所述啟動網(wǎng)絡(luò)引擎,顯示頁面內(nèi)容,包括:
所述網(wǎng)絡(luò)引擎在下載資源以及渲染布局的過程中,判斷是否滿足預(yù)設(shè)條件;
若滿足,執(zhí)行下述操作:
獲取顯示過渡圖像時所使用的圖形緩沖區(qū);
將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
可選的,所述預(yù)設(shè)條件包括:所述過渡圖像顯示完畢。
可選的,所述網(wǎng)絡(luò)引擎在下載資源以及渲染布局的過程中,還執(zhí)行下述操作:
根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述預(yù)設(shè)條件包括:
所述過渡圖像顯示完畢、且所述可繪制區(qū)域的尺寸滿足首屏要求;
所述將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中,包括:將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
可選的,所述網(wǎng)絡(luò)引擎在下載資源以及渲染布局的過程中,還執(zhí)行下述操作:
根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述預(yù)設(shè)條件包括:所述可繪制區(qū)域的尺寸滿足首屏要求;
所述將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中,包括:將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
可選的,所述網(wǎng)絡(luò)引擎渲染布局的過程,是分層進(jìn)行的;
所述將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中,包括:將已分層布局好的頁面內(nèi)容合成并繪制到所述圖形緩沖區(qū)中。
相應(yīng)的,本申請還提供一種網(wǎng)絡(luò)引擎啟動裝置,包括:
過渡圖像顯示單元,用于顯示過渡圖像;
網(wǎng)絡(luò)引擎啟動單元,用于啟動網(wǎng)絡(luò)引擎,顯示頁面內(nèi)容;其中,所述網(wǎng)絡(luò)引擎在顯示頁面內(nèi)容時,復(fù)用過渡圖像顯示單元所使用的圖形緩沖區(qū)。
可選的,所述過渡圖像顯示單元,具體用于采用動畫方式顯示過渡圖像。
可選的,所述過渡圖像顯示單元和所述網(wǎng)絡(luò)引擎啟動單元,分別用于采用 不同的線程異步實(shí)現(xiàn)各自的功能。
可選的,所述過渡圖像顯示單元包括:
文件獲取子單元,用于獲取過渡圖像文件;
圖形緩沖區(qū)申請子單元,用于通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
解碼子單元,用于讀取所述文件獲取子單元所獲取的過渡圖像文件并執(zhí)行解碼操作;
第一圖形緩沖區(qū)寫入子單元,用于將所述解碼子單元得到的數(shù)據(jù)寫入所述圖形緩沖區(qū)中,以顯示過渡圖像。
可選的,所述文件獲取子單元具體用于,根據(jù)webapp的配置文件中指定的路徑獲取過渡圖像文件。
可選的,所述文件獲取子單元具體用于,根據(jù)預(yù)先設(shè)定的路徑獲取過渡圖像文件。
可選的,所述圖形緩沖區(qū)申請子單元,以及所述過渡圖像顯示單元中的其他子單元,分別采用不同的線程實(shí)現(xiàn)各自的功能。
可選的,所述過渡圖像顯示單元包括:
圖形緩沖區(qū)申請子單元,用于通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
第二圖像緩沖區(qū)寫入子單元,用于按照預(yù)設(shè)的顏色方案向所述圖形緩沖區(qū)中寫入數(shù)據(jù),以顯示對應(yīng)于所述顏色方案的過渡圖像。
可選的,所述網(wǎng)絡(luò)引擎啟動單元包括:
渲染布局子單元,用于網(wǎng)絡(luò)引擎下載資源以及渲染布局;
條件判斷子單元,用于在渲染布局子單元工作期間,判斷是否滿足預(yù)設(shè)條件;
圖形緩沖區(qū)獲取子單元,用于當(dāng)所述條件判斷子單元的輸出為是時,獲取所述過渡圖像顯示單元所使用的圖形緩沖區(qū);
布局內(nèi)容繪制子單元,用于將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
可選的,所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述過渡圖像顯示單 元完成過渡圖像的顯示。
可選的于,所述網(wǎng)絡(luò)引擎啟動單元還包括:
可繪制區(qū)域計算子單元,用于根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述過渡圖像顯示單元完成過渡圖像的顯示、且所述可繪制區(qū)域計算子單元計算的可繪制區(qū)域的尺寸滿足首屏要求;
所述布局內(nèi)容繪制子單元,具體用于將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
可選的,所述網(wǎng)絡(luò)引擎啟動單元還包括:
可繪制區(qū)域計算子單元,用于根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述可繪制區(qū)域計算子單元計算的可繪制區(qū)域的尺寸滿足首屏要求;
所述布局內(nèi)容繪制子單元,具體用于將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
可選的,所述渲染布局子單元,具體用于網(wǎng)絡(luò)引擎下載資源以及分層進(jìn)行渲染布局;
所述布局內(nèi)容繪制子單元,具體用于將已分層布局好的頁面內(nèi)容合成并繪制到所述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):
本申請?zhí)峁┑木W(wǎng)絡(luò)引擎啟動方法,包括顯示過渡圖像、以及通過啟動網(wǎng)絡(luò)引擎顯示頁面內(nèi)容的過程,并且在上述過程中,所述網(wǎng)絡(luò)引擎在顯示頁面內(nèi)容時,復(fù)用顯示過渡動畫所使用的圖形緩沖區(qū)。采用本方法,由于網(wǎng)絡(luò)引擎的啟動過程和過渡圖像的顯示過程,復(fù)用了相同的圖形緩沖區(qū),因此在網(wǎng)絡(luò)引擎的啟動過程中不僅實(shí)現(xiàn)了對用戶輸入的快速反饋,而且沒有因?yàn)檫^渡圖像的顯示而產(chǎn)生額外的緩沖區(qū)開銷,節(jié)省對內(nèi)存的占用。
附圖說明
圖1是本申請的一種網(wǎng)絡(luò)引擎啟動方法的實(shí)施例的流程圖;
圖2是本申請實(shí)施例提供的splash模塊顯示過渡圖像的處理流程的示意圖;
圖3是本申請實(shí)施例提供的多線程處理流程的示意圖;
圖4是本申請的一種網(wǎng)絡(luò)引擎啟動裝置的實(shí)施例的示意圖。
具體實(shí)施方式
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實(shí)施的限制。
在本申請中,分別提供了一種網(wǎng)絡(luò)引擎啟動方法,以及一種網(wǎng)絡(luò)引擎啟動裝置,在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說明。為了便于理解,先對本申請涉及的相關(guān)技術(shù)以及本申請的技術(shù)方案作簡要的說明。
對于在個人電腦、移動通訊設(shè)備等電子設(shè)備中運(yùn)行的應(yīng)用程序或者系統(tǒng)來說,在顯示設(shè)備上顯示用戶界面數(shù)據(jù)(ui數(shù)據(jù)),是實(shí)現(xiàn)與用戶交互的最基本方式。應(yīng)用程序或者系統(tǒng)可以向各自的圖形緩沖區(qū)(graphicsbuffer)中寫入需要顯示或者更新的用戶界面數(shù)據(jù)。
所述圖形緩沖區(qū)是指,用于顯示的內(nèi)存塊,通常由專門的模塊進(jìn)行管理,例如:圖形緩沖區(qū)管理模塊,該模塊負(fù)責(zé)存儲與管理圖形緩沖區(qū),例如可以根據(jù)應(yīng)用程序或者系統(tǒng)的請求為其分配圖形緩沖區(qū)。由于圖形緩沖區(qū)用于存儲待顯示的ui數(shù)據(jù),而不同電子設(shè)備的顯示分辨率不同,因此圖形緩沖區(qū)的大小也可能不同,以分辨率為1080p為例,每塊圖形緩沖區(qū)的大小通常為8mb。
應(yīng)用程序或者系統(tǒng)向各自的圖形緩沖區(qū)中寫入ui數(shù)據(jù)后,可以通知負(fù)責(zé)提供顯示服務(wù)的模塊(即顯示服務(wù)模塊)進(jìn)行顯示,顯示服務(wù)模塊通過軟件或者硬件的方式,將對應(yīng)于各個應(yīng)用程序以及系統(tǒng)的圖形緩沖區(qū)中的ui數(shù)據(jù)進(jìn)行計算、合并,并最終渲染輸出到顯示設(shè)備的硬件緩沖區(qū)中,從而實(shí)現(xiàn)用戶界面的顯示功能。
本申請的技術(shù)方案,則是在上述顯示技術(shù)的基礎(chǔ)上,在啟動網(wǎng)絡(luò)引擎與顯 示過渡圖像兩者之間實(shí)現(xiàn)了圖形緩沖區(qū)的復(fù)用。由于啟動網(wǎng)絡(luò)引擎比較耗時,為了對用戶輸入做出快速反饋,本申請的技術(shù)方案同樣采用了顯示過渡圖像的方式,在本文中將負(fù)責(zé)顯示過渡圖像的模塊稱為splash模塊。而本申請技術(shù)方案的核心在于,網(wǎng)絡(luò)引擎在啟動過程中并沒有重新申請新的圖形緩沖區(qū),而是復(fù)用了splash模塊所使用的圖形緩沖區(qū)進(jìn)行頁面內(nèi)容的顯示,從而避免產(chǎn)生額外的圖形緩沖區(qū)開銷,減少對內(nèi)存資源的占用。
下面對本申請的實(shí)施例進(jìn)行詳細(xì)說明。
請參考圖1,其為本申請的一種網(wǎng)絡(luò)引擎啟動方法的實(shí)施例的流程圖。所述方法包括如下步驟:
步驟101、顯示過渡圖像。
當(dāng)用戶通過點(diǎn)擊圖標(biāo)或者按鍵等方式啟動瀏覽器或者webapp時,通常會啟動相應(yīng)的應(yīng)用程序進(jìn)程,在應(yīng)用程序進(jìn)程的主線程中,可以先調(diào)用splash模塊顯示過渡圖像,然后再啟動webengine進(jìn)行頁面內(nèi)容的顯示,并且在顯示頁面內(nèi)容時復(fù)用splash模塊所采用的圖形緩沖區(qū),即:webengine獲取splash模塊顯示過渡圖像時使用的圖形緩沖區(qū),并將待顯示的頁面內(nèi)容輸出到所述圖形緩沖區(qū)中。
為了能夠更快地啟動webengine,以便用戶盡早看到頁面內(nèi)容,本實(shí)施例提供一種優(yōu)選實(shí)施方式:splash模塊和webengine的啟動以多線程異步的方式實(shí)施。例如,應(yīng)用程序進(jìn)程創(chuàng)建一個單獨(dú)的splash線程用于執(zhí)行splash模塊,負(fù)責(zé)顯示過渡圖像;而啟動webengine的任務(wù)則由主線程完成(也可以稱為webengine線程)。采用這種方式,一方面由于splash模塊是一個輕量級模塊,因此能夠以很快的方式顯示給用戶,提供及時反饋功能;另一方面,可以不阻塞webengine的啟動過程。本實(shí)施例的后續(xù)文字,重點(diǎn)針對采用多線程異步方式的實(shí)施方式進(jìn)行說明。
作為比較簡單易行的實(shí)施方式,splash模塊可以按照預(yù)設(shè)的顏色方案顯示過渡圖像,例如,預(yù)設(shè)顏色方案可以指定兩種或者兩種以上顏色按照特定規(guī)律排列顯示。具體實(shí)施過程包括:通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);按照預(yù)設(shè)的顏色方案向所述圖形緩沖區(qū)中寫入數(shù)據(jù),以顯示對應(yīng)于所述顏色方案的過渡圖像。
優(yōu)選地,為了增加過渡圖像的美觀性、或者在過渡圖像中傳達(dá)特定的信息, 例如:應(yīng)用程序標(biāo)志、廣告語等,本實(shí)施例提供根據(jù)過渡圖像文件展示過渡圖像的優(yōu)選實(shí)施方式。所述過渡圖像文件可以是預(yù)先設(shè)計好的圖片文件,例如:bmp文件或者jpg文件等。
采用這種優(yōu)選實(shí)施方式,splash模塊顯示過渡圖像的過程包括獲取過渡圖像、申請圖形緩沖區(qū)、解碼、寫圖形緩沖區(qū)這樣幾個步驟,分別對應(yīng)于如下所示的步驟101-1至101-4,下面結(jié)合圖2作進(jìn)一步描述。
步驟101-1、獲取過渡圖像文件。
splash模塊可以通過多種方式獲取過渡圖像文件。
如果本實(shí)施例所述方法由啟動webapp的指令觸發(fā)時,splash模塊可以根據(jù)webapp配置文件中指定的路徑獲取。例如:在android系統(tǒng)中,每個應(yīng)用程序都有對應(yīng)的manifest配置文件,其中可以配置過渡圖像的路徑信息,如果用戶點(diǎn)擊了對應(yīng)于webapp的圖標(biāo),在webapp進(jìn)程被創(chuàng)建時,可以將過渡圖像的路徑傳遞給splash模塊,從而splash模塊可以根據(jù)該路徑獲取過渡圖像文件。
如果本實(shí)施例所述方法由啟動瀏覽器的指令觸發(fā)時,splash模塊可以根據(jù)預(yù)先設(shè)定的路徑獲取過渡圖像文件。
步驟101-2、通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū)。
splash模塊向圖形緩沖區(qū)管理模塊發(fā)送申請圖形緩沖區(qū)的請求,所述圖形緩沖區(qū)管理模塊可以在其管理的圖形緩沖區(qū)中查找有無空閑的圖形緩沖區(qū),若找到,則將該圖形緩沖區(qū)返回給splash模塊;若沒有找到,則可以重新申請內(nèi)存創(chuàng)建空閑圖形緩沖區(qū),并將新創(chuàng)建的圖形緩沖區(qū)返回給splash模塊。在具體實(shí)施時,圖形緩沖區(qū)管理模塊返回給splash模塊的可以是圖形緩沖區(qū)的內(nèi)存地址,splash模塊后續(xù)則可以根據(jù)獲取的內(nèi)存地址執(zhí)行向圖形緩沖區(qū)中寫入數(shù)據(jù)的操作。
步驟101-3、讀取所述過渡圖像文件并執(zhí)行解碼操作。
splash模塊讀取已獲取的過渡圖像文件,并根據(jù)過渡圖像文件的數(shù)據(jù)存儲格式執(zhí)行相應(yīng)的解碼操作,將過渡圖像文件中的數(shù)據(jù)轉(zhuǎn)換成可以在顯示設(shè)備上輸出顯示的格式,例如:轉(zhuǎn)換成rgb色彩模式對應(yīng)的顏色值。
步驟101-4、將解碼得到的數(shù)據(jù)寫入所述圖形緩沖區(qū)中,以顯示所述過渡圖像。
splash模塊將解碼后的數(shù)據(jù)寫入在步驟101-2獲取的圖形緩沖區(qū)中,以在顯 示設(shè)備上顯示所述過渡圖像。在具體實(shí)施時,顯示服務(wù)模塊可以主動檢測所述圖形緩沖區(qū)被更新的事件,也可以由splash模塊在完成向圖形緩沖區(qū)寫入解碼數(shù)據(jù)的操作后,主動通知顯示服務(wù)模塊。顯示服務(wù)模塊負(fù)責(zé)所述圖形緩沖區(qū)中的待顯示數(shù)據(jù)輸出到顯示設(shè)備的硬件緩沖區(qū)中進(jìn)行顯示。
優(yōu)選地,為了提供更為友好的用戶交互方式,可以采用動畫方式顯示過渡圖像,即:顯示過渡動畫。所述動畫方式包括以下任意一種或者組合:漸變透明度(alpha)、漸變尺寸伸縮(scale)、移動(translate)、旋轉(zhuǎn)(rotate),具體采用哪種或者哪些動畫方式,可以預(yù)先設(shè)定,也可以在webapp的配置文件中指定。在采用動畫方式的情況下,splash模塊在完成圖形緩沖區(qū)的寫入操作后,可以按照具體的動畫方式,通知顯示服務(wù)模塊對圖形緩沖區(qū)中的數(shù)據(jù)進(jìn)行相應(yīng)的計算、渲染,并輸出到顯示設(shè)備的硬件緩沖區(qū)中,從而在顯示設(shè)備上呈現(xiàn)動畫效果。例如:通過對顯示位置的漸進(jìn)調(diào)整,可以實(shí)現(xiàn)移動的動畫效果。
至此通過步驟101-1至步驟101-4,對過渡圖像的顯示過程進(jìn)行了說明。在上面描述的實(shí)施方式中,splash模塊在單獨(dú)為其創(chuàng)建的splash線程中完成了申請圖形緩沖區(qū)、圖像解碼、以及寫圖形緩沖區(qū)等操作。
優(yōu)選地,為了盡可能快速地顯示過渡圖像,給用戶提供及時反饋,本實(shí)施例提供多線程并發(fā)實(shí)現(xiàn)splash模塊功能的優(yōu)選實(shí)施方式。例如:在splash線程啟動后,再創(chuàng)建一個getbuf線程,splash線程執(zhí)行獲取過渡圖像文件、以及解碼的操作,getbuf線程則執(zhí)行申請圖形緩沖區(qū)的操作,并將獲取的圖形緩沖區(qū)的內(nèi)存地址通過線程間的數(shù)據(jù)共享機(jī)制或者通訊機(jī)制傳遞給splash線程,splash線程將解碼后的數(shù)據(jù)寫入所述圖形緩沖區(qū)中,從而實(shí)現(xiàn)了向用戶快速呈現(xiàn)過渡圖像的功能。請參見圖3,其為本實(shí)施例提供的多線程處理流程的示意圖。
步驟102、啟動網(wǎng)絡(luò)引擎,顯示頁面內(nèi)容。
現(xiàn)有技術(shù)中,網(wǎng)絡(luò)引擎在啟動后,首先執(zhí)行必要的初始化操作,隨后通常可以執(zhí)行以下操作:下載待展示的頁面文檔(例如:html文件)及頁面文檔中涉及的各種資源;解析頁面文檔,轉(zhuǎn)換為dom樹;根據(jù)css等樣式信息,創(chuàng)建用于渲染dom樹的渲染樹(rendertree),所述渲染樹中的節(jié)點(diǎn)通常與頁面內(nèi)容中的可視部分相對應(yīng),通常為帶有顏色、尺寸等顯示屬性的矩形,這些矩形的順序與顯示順序一致;對渲染樹的節(jié)點(diǎn)進(jìn)行布局處理,確定其在屏幕上的顯示位置;最后遍歷渲染樹并將其中的節(jié)點(diǎn)繪制到網(wǎng)絡(luò)引擎申請的圖形緩沖區(qū)中, 以在顯示設(shè)備上呈現(xiàn)頁面內(nèi)容。
而本實(shí)施例提供的網(wǎng)絡(luò)引擎啟動方法,網(wǎng)絡(luò)引擎在執(zhí)行原有處理流程顯示頁面內(nèi)容的過程中,復(fù)用了在步驟101中所使用的圖形緩沖區(qū),也就是說,為了顯示過渡圖像所申請的圖形緩沖區(qū),在webengine的啟動過程中得到了重復(fù)利用,沒有因?yàn)檫^渡圖像的顯示而導(dǎo)致額外的緩沖區(qū)開銷,從而節(jié)省了對內(nèi)存的占用。下面對本步驟中webengine的處理過程作進(jìn)一步說明。
網(wǎng)絡(luò)引擎根據(jù)下載的資源生成dom樹及渲染樹,并對渲染樹的節(jié)點(diǎn)進(jìn)行布局,確定在屏幕上的顯示位置,在該過程中網(wǎng)絡(luò)引擎判斷是否滿足預(yù)設(shè)條件,若滿足,則獲取顯示過渡圖像時所使用的圖形緩沖區(qū),并將已布局好的頁面內(nèi)容(即:渲染樹中已布局好的各節(jié)點(diǎn))繪制到所述圖形緩沖區(qū)中。
在具體實(shí)施時,所述獲取顯示過渡圖像所使用的圖形緩沖區(qū),通常是指獲取所述圖形緩沖區(qū)的內(nèi)存地址以及大小等信息。對于采用多線程異步實(shí)施的方式,webengine線程可以通過線程間的數(shù)據(jù)共享機(jī)制或者通訊機(jī)制,從splash線程獲取其使用的圖形緩沖區(qū)的內(nèi)存地址以及大小等信息。
所述預(yù)設(shè)條件可以為:過渡圖像顯示完畢。采用這種方式,splash線程可以在過渡圖像顯示完畢后向webengine線程發(fā)送通知,從而webengine線程可以向splash線程獲取其顯示過渡圖像所使用的圖形緩沖區(qū),并將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。這種處理方式,對于采用動畫方式顯示過渡圖像的實(shí)施方式,可以保證過渡動畫顯示過程的完整性,并且可以盡快向用戶呈現(xiàn)頁面內(nèi)容。
優(yōu)選地,為了向用戶呈現(xiàn)完整的首屏信息,避免出現(xiàn)白屏或者部分白屏的現(xiàn)象,本實(shí)施例還提供了顯示完整首屏內(nèi)容的優(yōu)選實(shí)施方式,在這種情況下,所述預(yù)設(shè)條件為:過渡圖像顯示完畢、且可繪制區(qū)域的尺寸滿足首屏要求。
其中,所述可繪制區(qū)域是指,渲染樹中已布局好的節(jié)點(diǎn)所對應(yīng)的顯示屏幕中的區(qū)域;所述首屏(abovethefold,或者,firstscreen)是指,打開頁面后,在顯示屏幕上所呈現(xiàn)的第一屏,即:無需執(zhí)行滾屏操作就能被用戶看到的畫面。
采用這種優(yōu)選實(shí)施方式,webengine在下載資源以及渲染布局的過程中,可以執(zhí)行下述操作:根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸。在具體實(shí)施時,可以在對渲染樹中的節(jié)點(diǎn)進(jìn)行逐一布局的過程中,每完成一個節(jié)點(diǎn)的布局,就根據(jù)已布局節(jié)點(diǎn)在屏幕上的顯示位置,計算可繪制區(qū)域 的尺寸。當(dāng)檢測到過渡圖像顯示完畢后,如果當(dāng)前可繪制區(qū)域的尺寸尚未達(dá)到首屏的大小,則繼續(xù)進(jìn)行渲染樹中節(jié)點(diǎn)的布局,直到可繪制區(qū)域的尺寸滿足首屏要求,即:可繪制區(qū)域的尺寸大于或者等于首屏的大小,才可以向splash線程獲取圖形緩沖區(qū),并將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
采用這種優(yōu)選實(shí)施方式,由于webengine已經(jīng)將首屏內(nèi)容準(zhǔn)備好了,因此通過寫圖形緩沖區(qū)向用戶顯示出來的,通常是完整的首屏內(nèi)容,而不會出現(xiàn)白屏或者部分白屏的現(xiàn)象,從而從視覺體驗(yàn)的角度,實(shí)現(xiàn)了過渡圖像顯示到頁面內(nèi)容顯示的無縫切換,能夠保證用戶良好的瀏覽體驗(yàn)。
此外,本實(shí)施例還提供另一種能夠盡快展示首屏頁面內(nèi)容的優(yōu)選實(shí)施方式,即,所述預(yù)設(shè)條件為:可繪制區(qū)域的尺寸滿足首屏要求。采用這種優(yōu)選實(shí)施方式,與之前描述的優(yōu)選實(shí)施方式類似,網(wǎng)絡(luò)引擎在下載資源以及渲染布局的過程中,也根據(jù)已布局好頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;不同之處在于,webengine向splash線程獲取圖形緩沖區(qū)的觸發(fā)條件僅為:可繪制區(qū)域的尺寸滿足首屏要求。即:當(dāng)webengine計算得到的可繪制區(qū)域的尺寸大于或者等于首屏大小時,就可以通知splash線程首屏頁面內(nèi)容已準(zhǔn)備好,并向splash線程獲取圖形緩沖區(qū)、向其中寫入首屏頁面內(nèi)容,而無需等待過渡圖像顯示完畢。
采用這種優(yōu)選實(shí)施方式,可以盡快地向用戶展示首屏頁面內(nèi)容,特別是在采用動畫方式顯示過渡圖像的場景下,能夠減少用戶觀看過渡動畫的時間,而將用戶真正關(guān)心或者感興趣的頁面內(nèi)容盡可能快地呈現(xiàn)出來。
需要說明的是,由于web頁面中包含的各種頁面元素通常是分層的,例如:最底層為窗口,在其上設(shè)置有圖片,圖片上又可以設(shè)置按鈕、鏈接等等。因此,webengine在進(jìn)行渲染布局、準(zhǔn)備可繪制的頁面內(nèi)容的時候,通常采用分層的方式進(jìn)行,在滿足預(yù)設(shè)條件、獲取圖形緩沖區(qū)后,則可以將分層準(zhǔn)備好的待繪制內(nèi)容,通過層與層之間的疊加覆蓋關(guān)系進(jìn)行合成(composite),并將合成后的數(shù)據(jù)寫入從splash線程獲取的圖形緩沖區(qū)中。這樣可以減少對圖形緩沖區(qū)的重復(fù)寫入操作,提高執(zhí)行效率。
至此,通過步驟101-步驟102,對本實(shí)施例提供的網(wǎng)絡(luò)引擎啟動方法的具體實(shí)施方式進(jìn)行了詳細(xì)說明。通過上述描述可以看出,采用本實(shí)施例提供的網(wǎng)絡(luò)引擎啟動方法,由于網(wǎng)絡(luò)引擎的啟動過程和過渡圖像的顯示過程,復(fù)用了相同 的圖形緩沖區(qū),因此在網(wǎng)絡(luò)引擎的啟動過程中不僅實(shí)現(xiàn)了對用戶輸入的快速反饋,而且沒有因?yàn)檫^渡圖像的顯示而產(chǎn)生額外的緩沖區(qū)開銷,節(jié)省對內(nèi)存的占用。
在上述的實(shí)施例中,提供了一種網(wǎng)絡(luò)引擎啟動方法,與之相對應(yīng)的,本申請還提供一種網(wǎng)絡(luò)引擎啟動裝置。請參看圖4,其為本申請的一種網(wǎng)絡(luò)引擎啟動裝置的實(shí)施例示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。
本實(shí)施例的一種網(wǎng)絡(luò)引擎啟動裝置,包括:過渡圖像顯示單元401,用于顯示過渡圖像;網(wǎng)絡(luò)引擎啟動單元402,用于啟動網(wǎng)絡(luò)引擎,顯示頁面內(nèi)容;其中,所述網(wǎng)絡(luò)引擎在顯示頁面內(nèi)容時,復(fù)用過渡圖像顯示單元所使用的圖形緩沖區(qū)。
可選的,所述過渡圖像顯示單元,具體用于采用動畫方式顯示過渡圖像。
可選的,所述過渡圖像顯示單元和所述網(wǎng)絡(luò)引擎啟動單元,分別用于采用不同的線程異步實(shí)現(xiàn)各自的功能。
可選的,所述過渡圖像顯示單元包括:
文件獲取子單元,用于獲取過渡圖像文件;
圖形緩沖區(qū)申請子單元,用于通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
解碼子單元,用于讀取所述文件獲取子單元所獲取的過渡圖像文件并執(zhí)行解碼操作;
第一圖形緩沖區(qū)寫入子單元,用于將所述解碼子單元得到的數(shù)據(jù)寫入所述圖形緩沖區(qū)中,以顯示過渡圖像。
可選的,所述文件獲取子單元具體用于,根據(jù)webapp的配置文件中指定的路徑獲取過渡圖像文件。
可選的,所述文件獲取子單元具體用于,根據(jù)預(yù)先設(shè)定的路徑獲取過渡圖像文件。
可選的,所述圖形緩沖區(qū)申請子單元,以及所述過渡圖像顯示單元中的其他子單元,分別采用不同的線程實(shí)現(xiàn)各自的功能。
可選的,所述過渡圖像顯示單元包括:
圖形緩沖區(qū)申請子單元,用于通過向圖形緩沖區(qū)管理模塊申請的方式,獲取圖形緩沖區(qū);
第二圖像緩沖區(qū)寫入子單元,用于按照預(yù)設(shè)的顏色方案向所述圖形緩沖區(qū)中寫入數(shù)據(jù),以顯示對應(yīng)于所述顏色方案的過渡圖像。
可選的,所述網(wǎng)絡(luò)引擎啟動單元包括:
渲染布局子單元,用于網(wǎng)絡(luò)引擎下載資源以及渲染布局;
條件判斷子單元,用于在渲染布局子單元工作期間,判斷是否滿足預(yù)設(shè)條件;
圖形緩沖區(qū)獲取子單元,用于當(dāng)所述條件判斷子單元的輸出為是時,獲取所述過渡圖像顯示單元所使用的圖形緩沖區(qū);
布局內(nèi)容繪制子單元,用于將已布局好的頁面內(nèi)容繪制到所述圖形緩沖區(qū)中。
可選的,所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述過渡圖像顯示單元完成過渡圖像的顯示。
可選的,所述網(wǎng)絡(luò)引擎啟動單元還包括:
可繪制區(qū)域計算子單元,用于根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述過渡圖像顯示單元完成過渡圖像的顯示、且所述可繪制區(qū)域計算子單元計算的可繪制區(qū)域的尺寸滿足首屏要求;
所述布局內(nèi)容繪制子單元,具體用于將已布局好的首屏頁面內(nèi)容繪制到所述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
可選的,所述網(wǎng)絡(luò)引擎啟動單元還包括:
可繪制區(qū)域計算子單元,用于根據(jù)已布局好的頁面內(nèi)容的位置信息,計算可繪制區(qū)域的尺寸;
所述條件判斷子單元所采用的預(yù)設(shè)條件為:所述可繪制區(qū)域計算子單元計算的可繪制區(qū)域的尺寸滿足首屏要求;
所述布局內(nèi)容繪制子單元,具體用于將已布局好的首屏頁面內(nèi)容繪制到所 述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
可選的,所述渲染布局子單元,具體用于網(wǎng)絡(luò)引擎下載資源以及分層進(jìn)行渲染布局;
所述布局內(nèi)容繪制子單元,具體用于將已分層布局好的頁面內(nèi)容合成并繪制到所述圖形緩沖區(qū)獲取子單元獲取的圖形緩沖區(qū)中。
本申請雖然以較佳實(shí)施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。
1、計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。