本發明涉及移動終端技術領域,特別是指一種調整顯示流暢度的方法及裝置、移動終端。
背景技術:
在用戶使用智能移動終端的過程中,經常會遇到打開應用使用卡頓、桌面滑動不流暢的問題,這類問題主要跟移動終端本身的軟件優化、應用安裝過多導致系統資源不足等有關。目前的用于改善顯示流暢度的技術包括以下幾種:
1)在顯示一幀畫面時,應用發送指令開始顯示界面,系統界面顯示相關進程將指令傳遞給gpu(graphicprocessunit,圖形處理單元),gpu負責渲染,然后將渲染后的數據由系統界面顯示相關的界面進行合成并顯示到屏幕上;
2)通過檢測屏幕每刷新一幀畫面的滑動位移值來計算流暢度并調整代表卡頓的位移值;
3)通過檢測滑動距離和滑動方向并將這些數據發送給界面顯示控制進程,從而改進原有設計的界面顯示方式,避免cpu和gpu的不同步帶來的卡頓問題。
上述2)和3)這兩個技術都與界面元素顯示的距離和方向的檢測相關,1)為移動終端系統原生顯示處理方式,是一種基于軟硬件配合流程的正向處理方式,并沒有考慮到實際中遇到的各類卡頓、掉幀如何進行二次處理或預處理。
但是,上述方案都沒有解決移動終端系統最大的問題,就是越用越卡頓的問題。
技術實現要素:
本發明要解決的技術問題是提供一種調整顯示流暢度的方法及裝置、移動 終端,能夠解決移動終端使用卡頓、桌面滑動不流暢的問題。
為解決上述技術問題,本發明的實施例提供技術方案如下:
一方面,提供一種調整顯示流暢度的方法,應用于移動終端,所述方法包括:
獲取流暢幀的平均數據量;
將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理。
進一步地,將所述待發送幀進行分幀處理之后,所述方法還包括:
獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。
進一步地,所述獲取流暢幀的平均數據量包括:
在一幀畫面的處理時間低于第一閾值時,判斷該幀畫面為流暢幀;
計算n個流暢幀的總數據量,并將所述總數據量除以n得到所述平均數據量,其中,n為大于1的整數。
進一步地,所述如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理包括:
將當前時刻的待發送幀分為第一子幀和第二子幀,其中,所述第一子幀的數據量不大于所述平均數據量;
在當前時刻發送所述第一子幀。
進一步地,如果上一時刻的待發送幀經過分幀處理,則當前時刻的待發送幀為當前時刻待發送的初始幀與對上一時刻的待發送幀進行分幀后得到的第二子幀之和。
本發明實施例還提供了一種調整顯示流暢度的裝置,應用于移動終端,所述裝置包括:
獲取模塊,用于獲取流暢幀的平均數據量;
分幀處理模塊,用于將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待 發送幀進行分幀處理。
進一步地,所述裝置還包括:
控制模塊,用于獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。
進一步地,所述獲取模塊包括:
判斷單元,用于在一幀畫面的處理時間低于第一閾值時,判斷該幀畫面為流暢幀;
計算單元,用于計算n個流暢幀的總數據量,并將所述總數據量除以n得到所述平均數據量,其中,n為大于1的整數。
進一步地,所述分幀處理模塊具體用于將當前時刻的待發送幀分為第一子幀和第二子幀,其中,所述第一子幀的數據量不大于所述平均數據量,并在當前時刻發送所述第一子幀。
進一步地,如果上一時刻的待發送幀經過分幀處理,則當前時刻的待發送幀為當前時刻待發送的初始幀與對上一時刻的待發送幀進行分幀后得到的第二子幀之和。
本發明實施例還提供了一種移動終端,包括如上所述的調整顯示流暢度的裝置。
本發明的實施例具有以下有益效果:
上述方案中,獲取流暢幀的平均數據量,將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理,在分幀處理處理之后,獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。這樣當遇到卡頓時,可以根據流暢幀平均數據量將大于該值的幀數據進行分幀處理來減少發送到屏幕顯示的數據,降低cpu、gpu和系統進程傳送數據的負荷,緩解因cpu、gpu和系統進程處理延時導致的卡頓、掉幀問題。
附圖說明
圖1為本發明實施例調整顯示流暢度的方法的流程示意圖;
圖2為本發明實施例調整顯示流暢度的裝置的結構框圖;
圖3為本發明實施例調整顯示流暢度的方法的流程示意圖;
圖4為本發明實施例調整顯示流暢度的方法中各進程的交互示意圖。
具體實施方式
為使本發明的實施例要解決的技術問題、技術方案和優點更加清楚,下面將結合附圖及具體實施例進行詳細描述。
本發明的實施例針對現有技術中移動終端系統越用越卡頓的問題,提供一種調整顯示流暢度的方法及裝置、移動終端,能夠解決移動終端使用卡頓、桌面滑動不流暢的問題。
實施例一
本實施例提供一種調整顯示流暢度的方法,應用于移動終端,如圖1所示,本實施例包括:
步驟s1:獲取流暢幀的平均數據量;
步驟s2:將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理。
進一步地,在步驟s2之后,所述方法還包括:
步驟s3:獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。
本實施例獲取流暢幀的平均數據量,將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理,獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。這樣當遇到卡頓時,可以根據流暢幀平均數據量將大于該值的幀數據進行分幀處理來減少發送到屏幕顯示的數據,降低cpu、gpu和系統進程傳送數據的負荷,緩解因cpu、gpu和系統進程處理延時導致的卡頓、掉幀問題。
進一步地,所述獲取流暢幀的平均數據量包括:
在一幀畫面的處理時間低于第一閾值時,判斷該幀畫面為流暢幀;
計算n個流暢幀的總數據量,并將所述總數據量除以n得到所述平均數據量,其中,n為大于1的整數。
進一步地,所述第一閾值為16毫秒。
進一步地,所述如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理包括:
將當前時刻的待發送幀分為第一子幀和第二子幀,其中,所述第一子幀的數據量不大于所述平均數據量;
在當前時刻發送所述第一子幀。
進一步地,如果上一時刻的待發送幀經過分幀處理,則當前時刻的待發送幀為當前時刻待發送的初始幀與對上一時刻的待發送幀進行分幀后得到的第二子幀之和。
實施例二
本實施例提供了一種調整顯示流暢度的裝置,應用于移動終端,如圖2所示,所述裝置包括:
獲取模塊m1,用于獲取流暢幀的平均數據量;
分幀處理模塊m2,用于將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理。
進一步地,所述裝置還包括:
控制模塊m3,用于獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。
本實施例獲取流暢幀的平均數據量,將當前時刻的待發送幀的數據量與所述平均數據量進行比對,如果當前時刻的待發送幀的數據量大于所述平均數據量,則將所述待發送幀進行分幀處理,獲取連續進行分幀處理的次數,在所述次數大于預設值時,對移動終端的內存進行清理。這樣當遇到卡頓時,可以根據流暢幀平均數據量將大于該值的幀數據進行分幀處理來減少發送到屏幕顯示的數據,降低cpu、gpu和系統進程傳送數據的負荷,緩解因cpu、gpu 和系統進程處理延時導致的卡頓、掉幀問題。
進一步地,所述獲取模塊包括:
判斷單元,用于在一幀畫面的處理時間低于第一閾值時,判斷該幀畫面為流暢幀;
計算單元,用于計算n個流暢幀的總數據量,并將所述總數據量除以n得到所述平均數據量,其中,n為大于1的整數。
進一步地,所述第一閾值為16毫秒。
進一步地,所述分幀處理模塊具體用于將當前時刻的待發送幀分為第一子幀和第二子幀,其中,所述第一子幀的數據量不大于所述平均數據量,并在當前時刻發送所述第一子幀。
進一步地,如果上一時刻的待發送幀經過分幀處理,則當前時刻的待發送幀為當前時刻待發送的初始幀與對上一時刻的待發送幀進行分幀后得到的第二子幀之和。
實施例三
本實施例提供了一種移動終端,包括如上所述的調整顯示流暢度的裝置。
實施例四
用戶使用手機等android移動終端的過程中,經常會遇到打開應用使用卡頓、桌面滑動不流暢的問題,這類問題主要跟手機本身的軟件優化、應用安裝過多導致系統資源不足等有關,現有技術中如果出現了卡頓或不流暢的問題往往只能采用刪除應用、清理后臺進程,但這些方法只能治標,如果需要治本只能從系統本身的框架入手,而原生系統考慮的更多的是正常流程下的處理方式,沒有考慮遇到卡頓等問題如何靈活處理的問題。
為了解決上述問題,本實施例提供了一種調整顯示流暢度的方法,如圖3所示,本實施例具體包括以下步驟:
步驟s101:應用程序進程啟動,發送繪制界面指令,指令中包含界面顯示過程中每一幀畫面所包含的元素測量后總的數據量大小;
步驟s102:應用界面顯示相關系統進程接收應用程序進程發送的繪圖指令,記錄每個幀的處理時間和數據大小;
步驟s103:應用界面顯示相關系統進程判斷幀處理時間是否小于等于16毫秒,如果是則轉到步驟s105;對于大于16毫秒的幀的處理,轉到步驟s104。注:取決于當前終端屏幕硬件特性,其固定的刷新率一般為60hz/秒,所以一幀畫面必須在1/60,約為0.016秒,即16毫秒內完成,當一幀畫面能在低于16毫秒處理完成時,就代表該幀沒有導致后續幀處理延時和掉幀,代表系統是流暢的;
步驟s104:應用界面顯示相關系統進程不記錄處理時間大于16毫秒的幀數據大小;
步驟s105:應用界面顯示相關系統進程連續記錄系統在使用過程中n個流暢幀的總數據大小,其中n為大于1的整數,可以自定義;
步驟s106:應用界面顯示相關系統進程計算前n個數據量的平均值。該均值為前n個流暢幀的數據總量除以前n個流暢幀總的數量,得出每個流暢幀的平均數據量;
步驟s107:當有新的界面元素要顯示時,應用程序進程在發送每一幀畫面前獲取s106步驟中的平均數據量,和當前要發送幀的數據量做對比,如果當前幀數據量大于s106步驟中得到的平均數據量,則轉到步驟s108;如果當前幀數據量小于等于s106步驟中得到的平均數據量,則轉到步驟s105;
步驟s108:如果當前要發送幀的數據量大于平均數據量,則分幀處理,即將當前幀分為2幀,先發送小于等于平均數據量的幀數據,屏幕顯示該幀,并交由步驟s105中的系統進程記錄該幀數據量;剩余數據合并到下一幀;
步驟s109:s108步驟中分幀處理后,剩余數據合并到下一幀,當下一幀發送前,判斷其數據量加上上一幀分幀后剩余的數據量與平均數據量的大小,如果小于等于平均數據量,轉到步驟s105;如果大于平均數據量,則先合并數據,再轉到s108步驟分幀處理;
步驟s110:應用界面顯示相關系統進程記錄s108步驟和s110步驟連續出現次數,可以設定門限制值i,該i可以是5、10等數字,當達到門限值,通知后臺監控進程清理內存,降低其他應用對資源的消耗,至于后續的清理內存,以及臨時提高cpu和gpu頻率等措施都屬于現有技術,不屬于本發明范 圍,不再重復敘述。
本實施例在用戶流暢使用時記錄流暢幀的平均數據量,當遇到卡頓時,可以根據流暢幀平均數據量將大于該值的幀數據進行分幀處理來減少發送到屏幕顯示的數據,降低cpu、gpu和系統進程傳送數據的負荷,緩解因cpu、gpu和系統進程處理延時導致的卡頓、掉幀問題。
進一步地,本實施例還可以對連續出現的卡頓幀進行監控,從系統層面在后臺進行資源清理,緩解因資源有限導致的不流暢問題,具有良好的實施價值,能夠提升用戶的使用體驗。
實施例五
圖4為本發明實施例調整顯示流暢度的方法中各進程的交互示意圖,如圖4所示,本實施例包括應用程序進程、處理應用發送繪圖指令的系統進程以及用于清理后臺進程的監控進程,各進程的交互過程包括以下步驟:
步驟s201:應用進程發送繪圖指令及界面顯示過程中每一幀畫面所包含的元素測量后總的數據量大小;
步驟s202:處理應用發送繪圖指令的系統進程用于判斷并記錄流暢幀平均數據量,該平均數據量計算方式為:前n個流暢幀的數據總量除以前n個流暢幀總的數量,得出每個流暢幀的平均數據量;
步驟s203:處理應用發送繪圖指令的系統進程用于對非流暢幀進行分幀處理,對于幀數據大于流暢幀平均數據量的幀進行分幀,將多出的數據合并到下一幀;
步驟s204:處理應用發送繪圖指令的系統進程判斷是否連續出現的不流暢幀,如果出現則發送指令給用于清理后臺進程的監控進程進行后臺資源的回收。
此說明書中所描述的許多功能部件都被稱為模塊,以便更加特別地強調其實現方式的獨立性。
本發明實施例中,模塊可以用軟件實現,以便由各種類型的處理器執行。舉例來說,一個標識的可執行代碼模塊可以包括計算機指令的一個或多個物理或者邏輯塊,舉例來說,其可以被構建為對象、過程或函數。盡管如此,所標 識模塊的可執行代碼無需物理地位于一起,而是可以包括存儲在不同物理上的不同的指令,當這些指令邏輯上結合在一起時,其構成模塊并且實現該模塊的規定目的。
實際上,可執行代碼模塊可以是單條指令或者是許多條指令,并且甚至可以分布在多個不同的代碼段上,分布在不同程序當中,以及跨越多個存儲器設備分布。同樣地,操作數據可以在模塊內被識別,并且可以依照任何適當的形式實現并且被組織在任何適當類型的數據結構內。所述操作數據可以作為單個數據集被收集,或者可以分布在不同位置上(包括在不同存儲設備上),并且至少部分地可以僅作為電子信號存在于系統或網絡上。
在模塊可以利用軟件實現時,考慮到現有硬件工藝的水平,所以可以以軟件實現的模塊,在不考慮成本的情況下,本領域技術人員都可以搭建對應的硬件電路來實現對應的功能,所述硬件電路包括常規的超大規模集成(vlsi)電路或者門陣列以及諸如邏輯芯片、晶體管之類的現有半導體或者是其它分立的元件。模塊還可以用可編程硬件設備,諸如現場可編程門陣列、可編程陣列邏輯、可編程邏輯設備等實現。
在本發明各方法實施例中,所述各步驟的序號并不能用于限定各步驟的先后順序,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,對各步驟的先后變化也在本發明的保護范圍之內。
以上所述是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。