本技術(shù)涉及終端,尤其涉及一種圖層處理方法及相關(guān)裝置。
背景技術(shù):
1、隨著電子設(shè)備技術(shù)的發(fā)展,電子設(shè)備的應(yīng)用越來(lái)越廣泛,對(duì)顯示效果的需求也越來(lái)越高,電子設(shè)備界面所顯示的內(nèi)容也越來(lái)越豐富。一些實(shí)現(xiàn)中,電子設(shè)備的顯示界面通常是由多個(gè)圖層(layer)合成的,用戶在使用電子設(shè)備時(shí),可能會(huì)需要對(duì)電子設(shè)備當(dāng)前所顯示的界面進(jìn)行切換、關(guān)閉的操作,或者在該界面上又進(jìn)入另一界面。
2、目前,用戶在進(jìn)行上述操作的過(guò)程中,電子設(shè)備會(huì)時(shí)而出現(xiàn)卡頓的現(xiàn)象,影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供一種圖層處理方法及相關(guān)裝置,可以釋放電子設(shè)備中圖層所占用的內(nèi)存空間,有利于提高電子設(shè)備運(yùn)行速度,有利于降低電子設(shè)備卡頓的機(jī)率,有利于提升用戶體驗(yàn)。
2、第一方面,本技術(shù)實(shí)施例提出一種圖層處理方法。該方法包括:第一時(shí)刻,響應(yīng)于進(jìn)入第一界面的操作,顯示第一界面,所述第一界面包括m個(gè)圖層合成的圖像,所述m個(gè)圖層存在于第一隊(duì)列中,所述m個(gè)圖層處于被引用狀態(tài);其中,截至所述第一時(shí)刻所述電子設(shè)備中的圖層數(shù)量為n1,n1個(gè)圖層占用的內(nèi)存空間為l1,所述n1小于第一閾值,且所述l1在所述電子設(shè)備的目標(biāo)內(nèi)存空間中的占比小于第二閾值;第二時(shí)刻,響應(yīng)于從所述第一界面切換至第二界面的操作,顯示所述第二界面并將所述m個(gè)圖層放入所述第二隊(duì)列,所述第二界面包括p個(gè)圖層合成的圖像,所述p個(gè)圖層存在于第一隊(duì)列中,所述p個(gè)圖層和所述m個(gè)圖層均處于被引用狀態(tài);其中,截至所述第二時(shí)刻所述電子設(shè)備中的圖層數(shù)量為n2,n2個(gè)圖層占用的內(nèi)存空間為l2,所述n2大于或等于所述第一閾值,所述n2個(gè)圖層中包括所述p個(gè)圖層和所述m個(gè)圖層;基于所述n2大于或等于所述第一閾值,釋放所述第二隊(duì)列中的q個(gè)圖層,所述q個(gè)圖層為所述第二隊(duì)列中的全部或部分圖層;第三時(shí)刻,響應(yīng)于從所述第二界面切換至第三界面的操作,顯示所述第三界面并將所述p個(gè)圖層放入所述第二隊(duì)列,所述第三界面包括s個(gè)圖層合成的圖像,所述s個(gè)圖層存在于第一隊(duì)列中,所述s個(gè)圖層和所述p個(gè)圖層均處于被引用狀態(tài);其中,截至所述第三時(shí)刻所述電子設(shè)備中的圖層數(shù)量為n3,n3個(gè)圖層占用的內(nèi)存空間為l3,所述l3在所述電子設(shè)備的目標(biāo)內(nèi)存中占比大于或等于所述第二閾值,所述n3個(gè)圖層中包括所述s個(gè)圖層和所述p個(gè)圖層;基于所述l3在所述電子設(shè)備的目標(biāo)內(nèi)存中占比大于或等于所述第二閾值,釋放所述第二隊(duì)列中的k個(gè)圖層,所述k個(gè)圖層為所述第二隊(duì)列中的全部或部分圖層。
3、應(yīng)理解的是,第一閾值為電子設(shè)備中可以同時(shí)存在的圖層數(shù)量的閾值,電子設(shè)備中的圖層數(shù)量小于第一閾值的情況下可以認(rèn)為電子設(shè)備能夠正常創(chuàng)建新的圖層;第二閾值為電子設(shè)備中的圖層所占用的內(nèi)存空間的閾值,電子設(shè)備中的圖層所占用的內(nèi)存空間小于第二閾值的情況下,可以認(rèn)為電子設(shè)備運(yùn)行流暢,發(fā)生卡頓或閃退的機(jī)率較低。
4、還應(yīng)理解的是,第一隊(duì)列可以是包括顯示屏中正在顯示的界面對(duì)應(yīng)的圖層的隊(duì)列,第二隊(duì)列可以是離屏圖層隊(duì)列。應(yīng)注意的是,第一隊(duì)列和第二隊(duì)列均可以是可以實(shí)時(shí)更新的隊(duì)列,第二時(shí)刻時(shí)第二隊(duì)列中的圖層和第三時(shí)刻時(shí)第二隊(duì)列中的圖層可以是不相同的。
5、本技術(shù)實(shí)施例中,截至第一時(shí)刻電子設(shè)備中的圖層數(shù)量為n1,n1個(gè)圖層占用的內(nèi)存空間為l1,n1小于第一閾值,且l1在電子設(shè)備的目標(biāo)內(nèi)存空間中的占比小于第二閾值,故而,在第一時(shí)刻,電子設(shè)備處于正常運(yùn)行狀態(tài);截至第二時(shí)刻電子設(shè)備中的圖層數(shù)量為n2,n2個(gè)圖層占用的內(nèi)存空間為l2,n2大于或等于第一閾值,故而此時(shí)可以釋放第二隊(duì)列中的q個(gè)圖層;截至第三時(shí)刻電子設(shè)備中的圖層數(shù)量為n3,n3個(gè)圖層占用的內(nèi)存空間為l3,l3在電子設(shè)備的目標(biāo)內(nèi)存中占比大于或等于第二閾值,故而此時(shí)可以釋放第二隊(duì)列中的k個(gè)圖層。本技術(shù)實(shí)施例提供的方法,在電子設(shè)備中的圖層的數(shù)量超出第一閾值,和/或,電子設(shè)備中的圖層所占用的內(nèi)存超出第二閾值的情況下,釋放第二隊(duì)列中的全部或部分圖層,以釋放電子設(shè)備內(nèi)存,有利于提高電子設(shè)備運(yùn)行速度,有利于降低電子設(shè)備卡頓、應(yīng)用程序閃退的情況產(chǎn)生,提升用戶體驗(yàn)。
6、本技術(shù)實(shí)施例中涉及的m、p、n1、l1、n2、l2、n3、l3、q、s、k、x等大寫字母或大寫字母與數(shù)字的組合均表示大于或等于1的正整數(shù),后續(xù)不在重復(fù)說(shuō)明。
7、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述q個(gè)圖層滿足以下至少一項(xiàng)條件:所述q個(gè)圖層屬于所述第二隊(duì)列中創(chuàng)建時(shí)間處于前百分之x的圖層;或者,所述q個(gè)圖層中各個(gè)圖層占用的內(nèi)存空間在第二隊(duì)列中所有圖層占用的內(nèi)存空間中的占比超出第三閾值。
8、本技術(shù)實(shí)施例中,第二隊(duì)列中創(chuàng)建時(shí)間處于前百分之x的圖層,可以理解為是已離屏?xí)r間較長(zhǎng)但引用計(jì)數(shù)仍不為零的圖層,創(chuàng)建時(shí)間較長(zhǎng)但還未被釋放,其被異常引用的概率較高,故而本技術(shù)實(shí)施例中可以選擇將這部分圖層進(jìn)行釋放;第二隊(duì)列中占用的內(nèi)存空間在離屏圖層隊(duì)列中所有圖層占用的內(nèi)存空間中的占比超出第三閾值的圖層,可以理解為是在對(duì)電子設(shè)備的內(nèi)存占用較多的圖層,本技術(shù)實(shí)施例中,可以選擇將這部分圖層進(jìn)行釋放,可以加快電子設(shè)備內(nèi)存釋放效率。
9、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述第二隊(duì)列的各圖層攜帶有下述圖層信息:圖層的標(biāo)識(shí)、圖層的創(chuàng)建時(shí)間和圖層占用的內(nèi)存空間;所述釋放所述第二隊(duì)列中的q個(gè)圖層之前,所述方法包括:復(fù)制所述第二隊(duì)列中攜帶的所述圖層信息,并將所述圖層信息放入第三隊(duì)列;遍歷所述第三隊(duì)列得到所述q個(gè)圖層。
10、本技術(shù)實(shí)施例中,第二隊(duì)列是可以實(shí)時(shí)更新的隊(duì)列,為免直接在第二隊(duì)列中進(jìn)行篩選對(duì)第二隊(duì)列的中圖層的正常放入與釋放產(chǎn)生影響,在判斷出需要釋放第二隊(duì)列中的q個(gè)圖層的情況下,可以將第二隊(duì)列中的圖層信息復(fù)制并放入第三隊(duì)列,通過(guò)遍歷第三隊(duì)列得到該q個(gè)圖層,有利于電子設(shè)備的穩(wěn)定運(yùn)行。
11、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述釋放第二隊(duì)列中的q個(gè)圖層包括:將q個(gè)圖層中每個(gè)圖層的引用計(jì)數(shù)均設(shè)置為預(yù)設(shè)值,所述預(yù)設(shè)值用于標(biāo)識(shí)所述q個(gè)圖層可釋放。
12、可選地,該預(yù)設(shè)值可以為零,但本技術(shù)對(duì)此不做限定。
13、本技術(shù)實(shí)施例中,可以通過(guò)將q個(gè)圖層中每個(gè)圖層的引用計(jì)數(shù)均設(shè)置為預(yù)設(shè)值得方式,觸發(fā)q個(gè)圖層的釋放(或者也可以稱為清除、銷毀、析構(gòu)等)程序,這樣,無(wú)需為圖層的清除重新設(shè)定程序代碼,降低了電子設(shè)備的運(yùn)行復(fù)雜度。
14、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述電子設(shè)備包括第一應(yīng)用、顯示合成系統(tǒng)、顯示驅(qū)動(dòng)和顯示屏,所述第一界面屬于第一應(yīng)用,在所述響應(yīng)于進(jìn)入第一界面的操作之后,所述方法還包括:所述第一應(yīng)用向所述顯示合成模塊傳輸所述m個(gè)圖層的參數(shù),所述m個(gè)圖層的參數(shù)包括所述m個(gè)圖層中各個(gè)圖層的位置參數(shù)、內(nèi)容參數(shù)、大小參數(shù)、透明度參數(shù)以及層級(jí)參數(shù);所述顯示合成系統(tǒng)基于所述m個(gè)圖層的參數(shù)合成所述第一界面,并向所述顯示驅(qū)動(dòng)傳輸所述第一界面;所述顯示第一界面,包括:所述顯示驅(qū)動(dòng)向所述顯示屏傳輸所述第一界面;所述顯示屏顯示所述第一界面。
15、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述基于所述n2大于或等于所述第一閾值,釋放第二隊(duì)列中的q個(gè)圖層,包括:所述顯示合成系統(tǒng)基于所述n2大于或等于所述第一閾值,釋放第二隊(duì)列中的q個(gè)圖層。
16、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述第二隊(duì)列包括離屏圖層offscreenlayers隊(duì)列。
17、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述顯示合成系統(tǒng)包括顯示合成surfaceflinger模塊。
18、本技術(shù)實(shí)施例中,可以通過(guò)surfaceflinger實(shí)現(xiàn)定時(shí)對(duì)電子設(shè)備中圖層的數(shù)量和圖層的內(nèi)存的掃描,在不影響現(xiàn)有圖層創(chuàng)建和釋放流程的基礎(chǔ)上,有利于避免因圖層析構(gòu)異常而導(dǎo)致的電子設(shè)備卡頓、閃退等現(xiàn)象,有利于電子設(shè)備的流暢運(yùn)行,有利于提升用戶使用體驗(yàn)。
19、第二方面,本技術(shù)實(shí)施例提供一種圖層處理裝置,該圖層處理裝置可以是電子設(shè)備,也可以是電子設(shè)備內(nèi)的芯片或者芯片系統(tǒng)。該圖層處理裝置可以包括顯示單元和處理單元。當(dāng)該圖層處理裝置是電子設(shè)備時(shí),該顯示單元可以是顯示屏。該顯示單元用于執(zhí)行顯示的步驟,以使該電子設(shè)備實(shí)現(xiàn)第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的一種圖層處理方法。當(dāng)該圖層處理裝置是電子設(shè)備時(shí),該處理單元可以是處理器。該圖層處理裝置還可以包括存儲(chǔ)單元,該存儲(chǔ)單元可以是存儲(chǔ)器。該存儲(chǔ)單元用于存儲(chǔ)指令,該處理單元執(zhí)行該存儲(chǔ)單元所存儲(chǔ)的指令,以使該電子設(shè)備實(shí)現(xiàn)第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的一種圖層處理方法。當(dāng)該圖層處理裝置是電子設(shè)備內(nèi)的芯片或者芯片系統(tǒng)時(shí),該處理單元可以是處理器。該處理單元執(zhí)行存儲(chǔ)單元所存儲(chǔ)的指令,以使該電子設(shè)備實(shí)現(xiàn)第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的一種圖層處理方法。該存儲(chǔ)單元可以是該芯片內(nèi)的存儲(chǔ)單元(例如,寄存器、緩存等),也可以是該電子設(shè)備內(nèi)的位于該芯片外部的存儲(chǔ)單元(例如,只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器等)。
20、第三方面,本技術(shù)實(shí)施例提供一種電子設(shè)備,包括一個(gè)或多個(gè)處理器和存儲(chǔ)器,存儲(chǔ)器與一個(gè)或多個(gè)處理器耦合,存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼,計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,一個(gè)或多個(gè)處理器調(diào)用計(jì)算機(jī)指令,以使得電子設(shè)備執(zhí)行第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的方法。
21、第四方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括計(jì)算機(jī)程序或指令,當(dāng)計(jì)算機(jī)程序或指令在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的方法。
22、第五方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序代碼,當(dāng)計(jì)算機(jī)程序代碼在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的方法。
23、第六方面,本技術(shù)提供一種芯片或者芯片系統(tǒng),該芯片或者芯片系統(tǒng)包括一個(gè)或多個(gè)處理器,以及通信接口,通信接口和一個(gè)或多個(gè)處理器通過(guò)線路互聯(lián),一個(gè)或多個(gè)處理器用于運(yùn)行計(jì)算機(jī)程序或指令,以執(zhí)行第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式中描述的方法。其中,芯片中的通信接口可以為輸入/輸出接口、管腳或電路等。
24、在一種可能的實(shí)現(xiàn)中,本技術(shù)中上述描述的芯片或者芯片系統(tǒng)還包括至少一個(gè)存儲(chǔ)器,該至少一個(gè)存儲(chǔ)器中存儲(chǔ)有指令。該存儲(chǔ)器可以為芯片內(nèi)部的存儲(chǔ)單元,例如,寄存器、緩存等,也可以是該芯片的存儲(chǔ)單元(例如,只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器等)。
25、應(yīng)當(dāng)理解的是,本技術(shù)的第二方面至第六方面與本技術(shù)的第一方面的技術(shù)方案相對(duì)應(yīng),各方面及對(duì)應(yīng)的可行實(shí)施方式所取得的有益效果相似,不再贅述。