本發(fā)明涉及智能終端技術(shù)領(lǐng)域,尤其是涉及一種加速界面繪制的方法、裝置和終端。
背景技術(shù):
對于android智能終端來說觸摸操作的跟手性至關(guān)重要,其直接影響用戶觸摸操作的體驗。目前為了改善觸摸操作的跟手性,主要有以下兩種方式:一種是采用inputboost機制,當有input(輸入)事件時,通過提高cpu主頻的方式改善跟手性能;另一種是采用預判機制,該機制主要是根據(jù)觸摸屏固件發(fā)送的input事件進行預判,提前上報input事件給應用。
對于上述inputboost機制,如果頻率提高不多或者提高時間太短時,跟手性能改善的效果不明顯;如果頻率提高得太多或者持續(xù)時間太長,功耗又會明顯增加,影響手機的續(xù)航性能;而上述預判機制的準確性無法保證,存在一定的誤判概率。由此可見,目前的處理機制的跟手性能均不理想。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種加速界面繪制的方法、裝置和終端,以加快觸摸事件觸發(fā)的界面繪制,提升終端的跟手性能。
本發(fā)明采用的第一技術(shù)方案是:一種加速界面繪制的方法,應用于支持choreographer機制的android終端,所述方法包括:當接收到觸摸操作觸發(fā)的輸入事件時,記錄所述輸入事件的類型;當所述輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)所述觸摸操作的第一次繪制事件,如果是,調(diào)用所述第一次繪制事件的繪制流程;啟用所述垂直同步功能,繼續(xù)執(zhí)行所述觸摸操作后續(xù)的界面繪制。
進一步,所述方法還包括:預先設置所述垂直同步功能的默認狀態(tài)為禁用狀態(tài);或者,當接收到觸摸操作觸發(fā)的首個輸入事件時,設置所述垂直同步功能的狀態(tài)為禁用狀態(tài)。
進一步,所述垂直同步功能為禁用狀態(tài)通過設置變量use_vsync為無效實現(xiàn)。
進一步,所述監(jiān)聽是否出現(xiàn)所述觸摸操作的第一次繪制事件的步驟,包括:當所述輸入事件觸發(fā)調(diào)用choreographer類的postcallback函數(shù),且所述postcallback函數(shù)的參數(shù)類型首次為callback_traversal時,確定出現(xiàn)所述觸摸操作的第一次繪制事件。
進一步,所述記錄所述輸入事件的類型的步驟,包括:當所述觸摸操作的首個輸入事件對應手指中心移動的距離大于第一距離閾值時,記錄所述輸入事件的類型為滑動,并設置所述第一距離閾值為第二距離閾值,所述第二距離閾值大于所述第一距離閾值。
進一步,所述方法還包括:將input線程任務的優(yōu)先級設置為-8至-16之間的數(shù)值;所述input線程任務包括inputreader和inputdispatcher線程任務。
進一步,所述方法還包括:input內(nèi)核態(tài)驅(qū)動線程通過串行方式處理數(shù)據(jù)。
進一步,所述方法還包括:應用防抖過濾功能確定所述觸摸操作的手指中心;其中,所述防抖過濾功能至少包括以下之一參數(shù)設置:觸摸屏的空閑時間doze_mode的時長小于20ms,且大于10ms;觸摸屏的抖動判斷閾值在50至255之間;非偵測區(qū)域的誤觸判別計算為無效狀態(tài),其中,所述非偵測區(qū)域為預先設置的區(qū)域;報點率在110hz至120hz之間。
本發(fā)明采用的第二技術(shù)方案是:一種加速界面繪制的裝置,應用于支持choreographer機制的android終端,所述裝置包括:類型記錄模塊,用于當接收到觸摸操作觸發(fā)的輸入事件時,記錄所述輸入事件的類型;第一次繪制模塊,用于當所述輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)所述觸摸操作的第一次繪制事件,如果是,調(diào)用所述第一次繪制事件的繪制流程;繼續(xù)繪制模塊,用于啟用所述垂直同步功能,繼續(xù)執(zhí)行所述觸摸操作后續(xù)的界面繪制。
本發(fā)明采用的第三技術(shù)方案是:一種終端,包括處理器和用于存儲處理器可執(zhí)行指令的存儲器;處理器用于:當接收到觸摸操作觸發(fā)的輸入事件時,記錄輸入事件的類型;當輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)觸摸操作的第一次繪制事件,如果是,調(diào)用第一次繪制事件的繪制流程;啟用垂直同步功能,繼續(xù)執(zhí)行觸摸操作后續(xù)的界面繪制。
本發(fā)明公開的實施例提供的技術(shù)方案可以包括如下有益效果:
本實施例提供的加速界面繪制的方法、裝置和終端,當輸入事件的類型為按下或滑動時,監(jiān)聽到觸摸操作的第一次繪制事件時,在禁用垂直同步功能的條件下執(zhí)行第一次繪制事件的繪制流程,觸摸操作后續(xù)的界面繪制在啟用垂直同步功能的條件下進行,即第一次繪制流程不需要等待同步信號可以直接進行繪制,減少了觸摸操作的繪制等待時間,從而可以加快界面繪制,提高ui的響應速度,進而提升了終端的跟手性能。
本發(fā)明的其他特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的androidchoreographer繪制流程圖;
圖2為本發(fā)明提供的一種加速界面繪制的方法的第一實施方式的流程示意圖;
圖3為本發(fā)明提供的一種加速界面繪制的方法的第二實施方式的流程示意圖;
圖4為本發(fā)明提供的一種加速界面繪制的裝置的實施方式的結(jié)構(gòu)示意圖;
圖5為本發(fā)明提供的一種加速界面繪制的裝置的另一種實施方式的結(jié)構(gòu)示意圖;
圖6為本發(fā)明提供的一種加速界面繪制的裝置的另一種實施方式的結(jié)構(gòu)示意圖;
圖7為本發(fā)明提供的一種加速界面繪制的裝置的另一種實施方式的結(jié)構(gòu)示意圖;
圖8為本發(fā)明提供的一種加速界面繪制的裝置的另一種實施方式的結(jié)構(gòu)示意圖;
圖9是本發(fā)明提供的一種終端的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例中提到的跟手性能,通常指終端對觸摸操作的響應性能,跟手性能越好,說明終端響應用戶觸摸操作進行顯示越及時,提供的用戶體驗越好,如果跟手性能較差,則用戶會感覺終端的顯示響應慢,引起用戶不必要的多次觸摸操作,導致終端執(zhí)行無意義的觸摸事件,進一步影響用戶的正常使用。
為便于對上述跟手性能進行直觀地理解,本發(fā)明實施例提供了圖1所示的androidchoreographer繪制流程示意圖,對終端的繪制過程簡單介紹如下:android系統(tǒng)中choreographer類用來控制同步處理輸入(input)、動畫(animation)、繪制(draw)三個ui操作。具體地,android中的choreographer機制,用于與vsync機制配合,實現(xiàn)統(tǒng)一調(diào)度界面繪圖。choreographer主要注冊了callback_input、callback_animation、callback_traversal三個callback,只有callback_traversal與繪制直接聯(lián)系。
參見圖1所示,當監(jiān)聽到有觸摸操作時,發(fā)起回調(diào)函數(shù)postcallback,以及依次執(zhí)行函數(shù)postcallbackdelayed、postcallbackdelayedinternal;然后判斷設定的執(zhí)行時間是否在當前時間之后,若否(即圖中標識的“n”),發(fā)送msg_do_schedule_callback消息到主線程framehandler請求執(zhí)行回調(diào)(callback),安排執(zhí)行函數(shù)doschedulecallback,再在主線程調(diào)用函數(shù)scheduleframelocked;若是(即圖中標識的“y”),在主線程調(diào)用函數(shù)scheduleframelocked。
接著判斷是否使用vsync機制,變量use_vsync用于表示系統(tǒng)是否使用vsync機制,該變量的值可以通過讀取系統(tǒng)屬性debug.choreographer.vsync獲取。若使用vsync機制(即圖中標識的“y”),則判斷當前線程是否具備消息循環(huán)(即當前線程是否是ui線程);若具備消息循環(huán),則在主線程調(diào)用schedulevsynclocked,請求垂直同步信號;若不具備消息循環(huán),則發(fā)送msg_do_schedule_vsync消息請求vsync信號,并執(zhí)行函數(shù)doschedulevsync。在主線程調(diào)用schedulevsynclocked,收到垂直同步信號后,發(fā)送runnable對象到主線程,請求執(zhí)行函數(shù)doframe。最后執(zhí)行函數(shù)doframe,渲染下一幀。
若未使用vsync機制(即圖中標識的“n”),發(fā)送msg_do_frame到framehandler,并請求執(zhí)行函數(shù)doframe。
其中,在使用vsync機制的情況下,當函數(shù)postcallback的參數(shù)類型為callback_traversal且vsync信號到來時,才會在函數(shù)doframe中執(zhí)行真正的繪制動作。
在滑動手機時,觸摸屏(tp)固件會上報很多輸入事件(inputevent),用戶態(tài)的inputdispatcher線程將處理過的事件最終上報給app。app由于顯示(layout)、可見性(visibility)等發(fā)生改變,進而注冊參數(shù)類型為callback_traversal的postcallback,當下一個vsync信號到來時,進行繪制動作。因此存在以下問題:繪制必須要等待vsync的同步(vsync信號的時間間隔為16.6ms),影響的ui的響應速度。基于此,本發(fā)明實施例提供的一種加速界面繪制的方法、裝置和終端。以下首先對本發(fā)明實施例所公開的一種加速界面繪制的方法進行詳細介紹。
實施例1
圖2是本發(fā)明一種加速界面繪制的方法的第一實施方式的流程示意圖。應用于支持choreographer機制的android終端,本實施方式示出的方法流程包括如下步驟:
步驟s21,當接收到觸摸操作觸發(fā)的輸入事件時,記錄輸入事件的類型。
觸摸操作觸發(fā)的輸入事件的類型包括三種,分別是按下(down)、抬起(up)或者滑動(move)。在接收到觸摸屏采集的輸入事件時,記錄該輸入事件的類型,具體地在inputnative層記錄當前inputevent的type類型。對于輸入事件的屬性,是在inputreader中的dispatchtouches()函數(shù)中定義的。
步驟s22,當輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)觸摸操作的第一次繪制事件,如果是,調(diào)用第一次繪制事件的繪制流程。
在上述三種類型的觸摸事件中,類型為按下或滑動的觸摸事件才可能觸發(fā)繪制。該垂直同步功能即vsync同步機制,在禁用垂直同步功能的條件下,不需要等待vsync信號到來時再進行繪制。系統(tǒng)監(jiān)聽本次觸摸操作的多個輸入事件是否觸發(fā)第一次繪制事件,當輸入事件觸發(fā)調(diào)用choreographer類的postcallback函數(shù),且postcallback函數(shù)的參數(shù)類型首次為callback_traversal時,確定出現(xiàn)觸摸操作的第一次繪制事件。其中標識是否是第一次繪制事件,可以通過計數(shù)器或者設置標識位的方式進行,例如未出現(xiàn)繪制事件時,計數(shù)器的值為0,當滿足上述條件時,計數(shù)器加1,僅在計數(shù)器的值等于1時,確定出現(xiàn)觸摸操作的第一次繪制事件。
在出現(xiàn)觸摸操作的第一次繪制事件時,調(diào)用第一次繪制事件的處理流程,參見圖1所示的繪制流程圖,在禁用垂直同步功能的情況下,按照use_vsync判斷結(jié)果為no的流程執(zhí)行,直接調(diào)用doframe,不需要等待vsync信號到來時再調(diào)用doframe。因此減少了觸摸操作的第一次繪制的等待時間,從而提高ui的響應速度。
步驟s23,啟用垂直同步功能,繼續(xù)執(zhí)行觸摸操作后續(xù)的界面繪制。
在第一次繪制事件的繪制流程執(zhí)行后,啟用垂直同步功能,即只有首次真正觸發(fā)繪制流程的輸入事件是在禁用垂直同步功能的條件下立即觸發(fā)繪制流程調(diào)用doframe,該觸摸操作的其他后續(xù)的輸入事件在啟用垂直同步功能的條件下進行繪制,目的是通過使用vsync同步信號,避免顯示畫面抖動或撕裂(tearing)。
本實施例提供的上述方法,當輸入事件的類型為按下或滑動時,監(jiān)聽到觸摸操作的第一次繪制事件時,在禁用垂直同步功能的條件下執(zhí)行第一次繪制事件的繪制流程,觸摸操作后續(xù)的界面繪制在啟用垂直同步功能的條件下進行,即第一次繪制流程不需要等待同步信號可以直接進行繪制,減少了觸摸操作的繪制等待時間,從而可以加快界面繪制,提高ui的響應速度。
本實施例方法應用的android終端,支持垂直同步功能,在正常情況下該功能被設置為有效(可用)狀態(tài),考慮到減少首次繪制的等待時間,需要將該功能設置為無效(禁用)狀態(tài),具體包括以下兩種方式:
(1)預先設置垂直同步功能的默認狀態(tài)為禁用狀態(tài);
(2)當接收到觸摸操作觸發(fā)的首個輸入事件時,設置垂直同步功能的狀態(tài)為禁用狀態(tài)。
其中,在接收觸摸操作觸發(fā)的輸入事件前,已經(jīng)預先設置垂直同步功能的默認狀態(tài)為禁用狀態(tài);或者,在接收到觸摸操作觸發(fā)的首個輸入事件時設置,具體地,垂直同步功能為禁用狀態(tài)通過設置變量use_vsync為無效實現(xiàn)。
為了進一步加快繪制進程,加速ui響應,本實施例提供的方法還對首次滑動事件的判斷進行了優(yōu)化,其中記錄輸入事件的類型的步驟s21,具體包括:
當觸摸操作的首個輸入事件對應手指中心移動的距離大于第一距離閾值時,記錄輸入事件的類型為滑動,并設置第一距離閾值為第二距離閾值,第二距離閾值大于第一距離閾值。
其中,當觸摸操作的輸入事件中還未判斷出現(xiàn)滑動事件時,降低輸入事件判斷為滑動操作的閾值,使輸入事件更快地觸發(fā)真正的滑動流程。因此,在識別輸入事件時,使用第一距離閾值,在已經(jīng)識別到第一個繪制的滑動事件后,將該第一距離閾值設置為第二距離閾值,其中第二距離閾值大于第一距離閾值,優(yōu)選地第二距離閾值是觸摸屏識別滑動操作的默認值。例如上述第一距離閾值為4.8,上述第二距離閾值為8(系統(tǒng)的默認值)。
具體說來,android架構(gòu)中通過如下config_viewconfigurationtouchslop閥值來判斷是點擊還是滑動,即點擊的靈敏度。上述touchslop表示的是滑動距離值,即當手觸摸在屏幕上滑動時,只有滑動距離超過touchslop值時,才認為是滑動操作并去響應。在第一個繪制的滑動事件還沒有到來時,降低上述閾值,一旦識別到第一個繪制的滑動事件后,立即恢復默認值。通過在首個滑動輸入事件使用了較小的判斷閾值,使事件更容易被識別為滑動,從而更快地觸發(fā)真正的滑動動作對應的繪制。
為了進一步加快繪制進程,加速ui響應,本實施例提供的方法還對處理input事件的線程進行了優(yōu)化,具體如下:將input線程任務的優(yōu)先級設置為-8至-16之間的數(shù)值;input線程任務包括inputreader和inputdispatcher線程任務。
其中,input最主要有內(nèi)核態(tài)的驅(qū)動線程和用戶態(tài)的inputreader與inputdispatcher兩個線程任務。內(nèi)核態(tài)的驅(qū)動線程負責讀取tp固件數(shù)據(jù)并派發(fā)到用戶態(tài),inputreader主要讀取eventhub中的rawdata,而inputdispatcher處理inputreader讀取的事件并做進一步處理。
在現(xiàn)有技術(shù)中inputreader和inputdispatcher的優(yōu)先級原本為android_priority_urgent_display級別,即-8,將該級別調(diào)整為android_priority_urgent_display和android_priority_audio之間,即-8和-16之間(數(shù)值越小,代表優(yōu)先級越高,如-16比-8高)。通過調(diào)整線程任務的優(yōu)先級,保證其運行在cpu大核,任務處于實時優(yōu)先級,可以提高任務被調(diào)度執(zhí)行的時間片,使之更及時的處理inputevent。
進一步地,input內(nèi)核態(tài)驅(qū)動線程通過串行方式處理數(shù)據(jù),可以規(guī)避異步開銷,保持實時性。
現(xiàn)有的tp固件的landfilter功能雖然保證了準確性,但影響性能,本實施例提供的方法還對landfilter功能進行了改進,動態(tài)調(diào)整filter,部分動作移到ap端進行,具體如下:
應用防抖過濾功能確定觸摸操作的手指中心。其中,防抖過濾功能至少包括以下之一參數(shù)設置:觸摸屏的空閑時間doze_mode的時長小于20ms,且大于10ms;觸摸屏的抖動判斷閾值在50至255之間;非偵測區(qū)域的誤觸判別計算為無效狀態(tài),其中,非偵測區(qū)域為預先設置的區(qū)域;報點率在110hz至120hz之間。
上述改進包括兩個方面的修改:第一部分減少tp觸點到tp響應的延時,優(yōu)化方法是通過減少tp的空閑時間(doze_mode)來實現(xiàn);第二部分減少ap處理點的時間,優(yōu)化方法通過減小抖動判斷閥值,取消抖動判斷對非偵測區(qū)域的計算和提高報點率三者綜合修改來達到延時的要求。其中對doze_mode的時長的設置綜合考慮tp對用戶觸摸操作的響應和功耗的平衡,在doze_mode時長小于10ms時,tp的功耗過大,不利于終端的續(xù)航性能;將非偵測區(qū)域的誤觸判別計算為無效狀態(tài),即對非偵測區(qū)域不進行抖動判斷計算,非偵測區(qū)域為tp的中心區(qū)域(相對于tp四周的邊緣區(qū)域而言);將報點率提高為110hz至120hz之間的數(shù)值,通過提高采集觸摸操作的頻率,從而加快速度。
本實施例提供的上述方法,通過動態(tài)調(diào)整filter,部分動作移到ap端進行;通過調(diào)整inputreader和inputdispatcher線程任務的優(yōu)先級,達到提高處理優(yōu)先級,從而改善input速度;通過識別按下和滑動的第一次繪制,不再等同步信號的到來,直接進行繪制,僅對第一次需要繪制的按下或者滑動的input進行處理;另外當還未觸發(fā)第一個繪制的滑動事件,降低輸入事件判斷為滑動操作的閾值,使事件更容易被識別為滑動,從而更快地觸發(fā)真正的滑動動作對應的繪制;從而可以加快界面繪制,提高ui的響應速度。
實施例2
圖3是本發(fā)明一種加速界面繪制的方法的第二實施方式的流程示意圖,本實施例的以帶有觸摸屏的android移動終端為例進行說明,該實施方式示出的方法流程包括如下步驟:
步驟s31,移動終端開機。
步驟s32,接收觸摸操作觸發(fā)的輸入事件。
步驟s33,判斷觸摸操作的輸入事件對應的手指中心移動的距離是否首次大于第一距離閾值。如果是,執(zhí)行步驟s34,如果否,執(zhí)行步驟s35。
通過判斷輸入事件對應的手指中心移動的距離是否首次大于第一距離閾值,來判斷該輸入事件是否是本次觸摸操作對應的多個輸入事件中第一個被識別為滑動操作的輸入事件,僅對該第一個被識別為滑動操作的輸入事件的過程中使用第一距離閾值,該第一距離閾值小于默認值(用于識別其他輸入事件)
步驟s34,記錄該輸入事件的類型為滑動,并設置第一距離閾值為第二距離閾值。
在將上述輸入事件的類型記錄為滑動后,恢復判斷滑動操作的閾值,上述第二距離閾值大于第一距離閾值,優(yōu)選地,第二距離閾值即系統(tǒng)原保存的閾值默認值。
步驟s35,記錄該輸入事件的類型。
步驟s36,當輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,判斷該輸入事件是否觸發(fā)該觸摸操作的第一次繪制事件。如果是,執(zhí)行步驟s37;如果否,執(zhí)行步驟s39。
對第一次真正觸發(fā)繪制流程的輸入事件,在禁用垂直同步功能的條件下,直接觸發(fā)繪制流程,不需要等待vsync的同步。
步驟s37,調(diào)用該第一次繪制事件的繪制流程。
步驟s38,啟用垂直同步功能,并繼續(xù)執(zhí)行觸摸操作后續(xù)的界面繪制。
在執(zhí)行第一次真正觸發(fā)繪制流程的輸入事件的繪制流程時,將垂直同步功能重新啟用,即在該第一次真正觸發(fā)繪制流程的輸入事件之后的該觸摸操作的其他輸入事件均在垂直同步功能啟動的條件下進行繪制,即經(jīng)過vsync的同步,可以避免畫面抖動的發(fā)生。
步驟s39,判斷該輸入事件是否觸發(fā)繪制事件。如果是,執(zhí)行步驟s40;如果否,結(jié)束流程。
在經(jīng)過是否觸發(fā)該觸摸操作的第一次繪制事件的判斷,得到判斷結(jié)果為否的情況下,還需要判斷該輸入事件是否觸發(fā)繪制事件:如果觸發(fā)繪制事件,調(diào)用對應的繪制流程;如果不觸發(fā)繪制事件,則結(jié)束流程。在此需要說明的是,在觸發(fā)繪制事件的情況下(且該輸入事件不是第一次觸發(fā)繪制流程的輸入事件),垂直同步功能已經(jīng)被更改為啟動狀態(tài)(步驟s38)。
步驟s40,調(diào)用該輸入事件對應的繪制流程。
本實施例提供的上述方法,當輸入事件的類型為按下或滑動時,判斷該輸入事件是否觸發(fā)第一次真正繪制流程,如果是則不再等同步信號的到來,直接進行該輸入事件的繪制,并且僅對第一次類型為滑動的輸入事件進行閾值優(yōu)化,降低輸入事件判斷為滑動操作的閾值,使事件更容易被識別為滑動,從而更快地觸發(fā)真正的滑動動作對應的繪制;從而可以加快界面繪制,提高ui的響應速度。
實施例3
本發(fā)明實施例3提供了一種加速界面繪制的裝置,應用于支持choreographer機制的android終端,參見圖4所示的結(jié)構(gòu)示意圖,包括類型記錄模塊410、第一次繪制模塊420和繼續(xù)繪制模塊430,其中,各模塊的功能如下:
類型記錄模塊410,用于當接收到觸摸操作觸發(fā)的輸入事件時,記錄輸入事件的類型;
第一次繪制模塊420,用于當輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)觸摸操作的第一次繪制事件,如果是,調(diào)用第一次繪制事件的繪制流程;
繼續(xù)繪制模塊430,用于啟用垂直同步功能,繼續(xù)執(zhí)行觸摸操作后續(xù)的界面繪制。
本實施例提供的上述裝置,當輸入事件的類型為按下或滑動時,監(jiān)聽到觸摸操作的第一次繪制事件時,在禁用垂直同步功能的條件下執(zhí)行第一次繪制事件的繪制流程,觸摸操作后續(xù)的界面繪制在啟用垂直同步功能的條件下進行,即第一次繪制流程不需要等待同步信號可以直接進行繪制,減少了觸摸操作的繪制等待時間,從而可以加快界面繪制,提高ui的響應速度。
參見圖5所示的加速界面繪制的裝置的結(jié)構(gòu)示意圖,上述裝置還包括:禁用模塊510,用于預先設置垂直同步功能的默認狀態(tài)為禁用狀態(tài);或者,當接收到觸摸操作觸發(fā)的首個輸入事件時,設置垂直同步功能的狀態(tài)為禁用狀態(tài)。其中,垂直同步功能為禁用狀態(tài)通過設置變量use_vsync為無效實現(xiàn)。
具體地,上述第一次繪制模塊420還用于:當輸入事件觸發(fā)調(diào)用choreographer類的postcallback函數(shù),且postcallback函數(shù)的參數(shù)類型首次為callback_traversal時,確定出現(xiàn)觸摸操作的第一次繪制事件。
上述類型記錄模塊410還用于:當觸摸操作的首個輸入事件對應手指中心移動的距離大于第一距離閾值時,記錄輸入事件的類型為滑動,并設置第一距離閾值為第二距離閾值,第二距離閾值大于第一距離閾值。
參見圖6所示的加速界面繪制的裝置的結(jié)構(gòu)示意圖,上述裝置還包括:優(yōu)先級設置模塊610,用于將input線程任務的優(yōu)先級設置為-8至-16之間的數(shù)值;input線程任務包括inputreader和inputdispatcher線程任務。
進一步,參見圖7所示的加速界面繪制的裝置的結(jié)構(gòu)示意圖,上述裝置還包括:串行處理模塊710,用于input內(nèi)核態(tài)驅(qū)動線程通過串行方式處理數(shù)據(jù)。
進一步,參見圖8所示的加速界面繪制的裝置的結(jié)構(gòu)示意圖,上述裝置還包括:防抖模塊810,用于應用防抖過濾功能確定觸摸操作的手指中心;其中,防抖過濾功能至少包括以下之一參數(shù)設置:觸摸屏的空閑時間doze_mode的時長小于20ms,且大于10ms;觸摸屏的抖動判斷閾值在50至255之間;非偵測區(qū)域的誤觸判別計算為無效狀態(tài),其中,非偵測區(qū)域為預先設置的區(qū)域;報點率在110hz至120hz之間。
本發(fā)明實施例所提供的裝置,其實現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實施例相同,為簡要描述,裝置實施例部分未提及之處,可參考前述方法實施例中相應內(nèi)容。
實施例4
本發(fā)明實施例4提供了一種終端,包括處理器和用于存儲處理器可執(zhí)行指令的存儲器;上述處理器用于:當接收到觸摸操作觸發(fā)的輸入事件時,記錄輸入事件的類型;當輸入事件的類型為按下或滑動時,在禁用垂直同步功能的條件下,監(jiān)聽是否出現(xiàn)觸摸操作的第一次繪制事件,如果是,調(diào)用第一次繪制事件的繪制流程;啟用垂直同步功能,繼續(xù)執(zhí)行觸摸操作后續(xù)的界面繪制。
圖9示出了一種可應用于本發(fā)明實施例中的終端100的結(jié)構(gòu)框圖。如圖9所示,移動終端100包括加速界面繪制的裝置101、存儲器102、存儲控制器104,一個或多個(圖中僅示出一個)處理器106、外設接口108、射頻模塊110、音頻模塊112、觸控屏幕114等。這些組件通過一條或多條通訊總線/信號線116相互通訊。
存儲器102可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的加速界面繪制的方法、裝置對應的程序指令/模塊,處理器106通過運行存儲在存儲器102內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理,如本發(fā)明實施例提供的加速界面繪制的方法。
存儲器102可包括高速隨機存儲器,還可包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。處理器106以及其他可能的組件對存儲器102的訪問可在存儲控制器104的控制下進行。
外設接口108將各種輸入/輸出裝置耦合至處理器106以及存儲器102。在一些實施例中,外設接口108,處理器106以及存儲控制器104可以在單個芯片中實現(xiàn)。在其他一些實例中,他們可以分別由獨立的芯片實現(xiàn)。
射頻模塊110用于接收以及發(fā)送電磁波,實現(xiàn)電磁波與電信號的相互轉(zhuǎn)換,從而與通訊網(wǎng)絡或者其他設備進行通訊。
音頻模塊112向用戶提供音頻接口,其可包括一個或多個麥克風、一個或者多個揚聲器以及音頻電路。
觸控屏幕114在移動終端100與用戶之間同時提供一個輸出及輸入界面。在本實施例中,上述觸控屏幕114支持單點和多點觸控操作,例如,該觸控屏幕114可為支持單點和多點觸控操作的電容式觸摸屏或電阻式觸摸屏等。支持單點和多點觸控操作是觸控屏幕114能感應到來自該觸摸屏11上一個或多個位置處同時產(chǎn)生的觸控操作,并將該感應到的多點觸控操作交由處理器106進行處理。
可以理解,圖9所示的結(jié)構(gòu)僅為示意,移動終端100還可包括比圖9中所示更多或者更少的組件,或者具有與圖9所示不同的配置。圖9中所示的各組件可以采用硬件、軟件或其組合實現(xiàn)。
本發(fā)明實施例還提供了一種計算機存儲介質(zhì),用于儲存為上述加速界面繪制的裝置所用的計算機軟件指令,其包含用于執(zhí)行上述方面為加速界面繪制的裝置所設計的程序。上述程序包括的指令可用于執(zhí)行前面方法實施例中的方法,具體實現(xiàn)可參見方法實施例,在此不再贅述。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,該模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
在本申請所提供的幾個實施例中,應該理解到,所揭露的方法、系統(tǒng)和裝置,可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,該模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,又例如,多個模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
以上實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明保護范圍的限制。應當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明的保護范圍應以所附權(quán)利要求為準。