專利名稱:一種通過多緩沖機制提升安卓系統(tǒng)性能的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于安卓(Android)系統(tǒng)中通過增加緩沖器來提升系統(tǒng)性能的方法,即一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,屬于安卓系統(tǒng)優(yōu)化技術(shù)領(lǐng)域。
背景技術(shù):
伴隨著谷歌新版移動操作系統(tǒng)Android4. IJelly Bean的問世,谷歌的Android平臺自2010年以來呈現(xiàn)出突飛猛進的發(fā)展勢頭,在全球智能手機市場中所占份額從不到10% 一路猛增至50%以上,Android系統(tǒng)已經(jīng)成為移動終端及嵌入式終端系統(tǒng)的最大霸主。但是Android系統(tǒng)上仍有一些不足,值得工程人員繼續(xù)對其進行優(yōu)化。例如,用戶在利用觸摸屏的Fling、Scroll等Gesture (手勢)來操作屏幕,當用戶在觸摸屏幕上連續(xù)進行很多手勢時,有時會發(fā)現(xiàn)屏幕卡一下,本文就是針對android系統(tǒng)中對Touchevent處理時等待時間長甚至出現(xiàn)卡機現(xiàn)象進行優(yōu)化,以提升系統(tǒng)系性能,改善用戶體驗。
在Android系統(tǒng)中,觸摸屏每次有觸控信息就觸發(fā)了一系列touch事件ACTI0N_ D0WN->ACT10N_M0VE->ACT10N_M0VE->ACT10N_M0VE. . . ->ACT10N_M0VE->ACT10N_UP,即調(diào)用 onTouchEvent ()函數(shù),在該函數(shù)里每有一個down, move, up消息時,都會讓其新建一個path 對象,然后將其存到一個buffer中,待系統(tǒng)檢測到這個buffer的內(nèi)容后對其進行提取、處理;在系統(tǒng)檢測和處理此buffer中內(nèi)容的期間,觸摸屏上再有觸控信息時會按照相同的方式存到另外一個buffer中。通常情況,系統(tǒng)處理此buffer中內(nèi)容的時間會比觸摸屏上的觸控信息寫到buffer中的時間長,因此當觸摸屏有比較多的連續(xù)觸控信息時,就會發(fā)生觸控信息沒有buffer可用來存儲的情況,用戶就會發(fā)現(xiàn)觸摸屏上會卡一下。
存儲需要顯示的巾貞內(nèi)容的framebuffer中也會遇到類似發(fā)卡的現(xiàn)象。 framebuffer用一塊特殊的內(nèi)存來顯示當前娠,當內(nèi)存中的巾貞信息顯示出來后,一個單獨完整的部分內(nèi)存用來添裝下一娠。一旦第二娠填充完成,framebuffer被命令找到第二個 buffer替代。此時主buffer變成了第二個buffer,第二個buffer也就變成了主buffer。這個操作通常在垂直回歸期(verti cal blanking interval)完成,來防止屏幕tearing (舊娠顯示一半,新娠顯示一半)。由于有時每個buffer里面的內(nèi)容顯示用的時間比較長,就會發(fā)生兩個buffer都是飽和的情況,系統(tǒng)發(fā)過來的幀信息無處可存,系統(tǒng)就會卡一下。
專利號為CN201110172844. O、發(fā)明人為毛德操、王承志、徐鼎鼎、傅唯威、發(fā)明名稱為《Wine與安卓手機軟鍵盤輸入的整合方法》的專利公開了一種Wine與安卓手機軟鍵盤輸入的整合方法,本方法解決了 Wine和Android/OMS關(guān)于軟鍵盤輸入的整合問題,同時解決了彈出、關(guān)閉軟鍵盤的時機與途徑問題。但是此發(fā)明對輸入的信息的存儲方式和信息傳遞流程沒有涉及,本文發(fā)明正是從信息存儲方面對安卓系統(tǒng)進行了優(yōu)化。發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,它是一種基于增加存儲觸摸屏觸發(fā)信息的buffer和增加framebuffer中的buffer的方法,以提升系統(tǒng)性能。
本發(fā)明的技術(shù)方案是采用如下方式來實現(xiàn)的。
一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,在安卓系統(tǒng)的內(nèi)存中將原有的分配的給存儲觸摸屏觸發(fā)信息的2個緩沖寄存器變?yōu)?個緩沖寄存器,對其進行編號為 bufferO, buffer I,buffer2,該方法步驟如下
I) preProcessEvent O函數(shù)檢查到觸摸屏上有觸控信息時,判斷用戶輸入信息是否投遞,若投遞則調(diào)用onTouchEvent O函數(shù),該函數(shù)讓其新建一個path (路徑)對象,然后將其存到一個緩沖寄存器bufferO中;
2)系統(tǒng)dispatcher函數(shù)在緩沖寄存器上等待,一旦緩沖寄存器bufferO獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器bufferO中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器bufferO中的內(nèi)容清除;
3)在dispatcher函數(shù)和分發(fā)函數(shù)處理上一步中緩沖寄存器bufferO里的信息時, 此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到緩沖寄存器bufferl中;緩沖寄存器bufferl獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器bufferl中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器bufferl中的內(nèi)容清除;
4)若緩沖寄存器bufferO、bufferl中的觸控信息都沒有清除;此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到另外的一個緩沖寄存器 buffer2中,緩沖寄存器buffer2獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器buffer2中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器buffer2中的內(nèi)容清除。
本發(fā)明在安卓系統(tǒng)的內(nèi)存中增加一個存儲觸摸屏觸發(fā)信息的buffer,并對其進行編號為bufferO, bufferl, buffer2。當觸摸屏每次有觸控信息時,就調(diào)用onTouchEvent O 函數(shù),在該函數(shù)里每有一個down, move, up消息時,都會讓其新建一個path對象,然后依次檢測bufferO, bufferl, buffer2是否可存儲,將觸控信息存到一個可利用的buffer中; 當此buffer存滿后,觸摸屏上又有觸控信息時,就將其存到下一個buffer中。系統(tǒng)通過 dispatcher函數(shù)依次檢測bufferO, bufferl, buffer2中是否有未處理的的觸控信息,當有未處理的觸控信息時,系統(tǒng)通過分發(fā)函數(shù)將buffer中的信息傳送到客戶端處理,處理完成后將此buffer中的內(nèi)容清除;在此過程中,若觸摸屏上有觸控信息,就存儲到其余的兩個 buffer中。由于系統(tǒng)處理一個buffer中的信息比信息存儲到一個buffer中用的時間長, 這樣,在系統(tǒng)處理一個buffer中的信息時候,還有兩個buffer可以用來存儲觸摸屏上的觸控信息;因此,降低了儲存觸摸屏上觸控信息會卡事件的概率,提高了用戶對屏幕操作的流暢度,改善了用戶體驗。
依照同樣的原理,在存儲需要顯示的巾貞內(nèi)容的framebuffer (巾貞緩沖器)中增加一個buffer (緩沖寄存器),即由原來的2個buffer變?yōu)?個buffer,并且對其編號為 bufferO, bufferl, buffer2。當一巾貞信息過來后,先填充bufferO,當bufferO被填滿后, bufferO的巾貞被調(diào)出來顯示,顯示完成后將此buffer中的內(nèi)容清除;在bufferO顯示的過程中,若再有過來的巾貞就依次存儲到bufferl、buffer2中;待bufferO中的巾貞顯示完成后, framebuffer被命令找到存儲完成的bufferl或buffer2替代bufferO,此時主buffer變成了 bufferl (或buffer2)。這樣需要顯示的巾貞信息能更流暢的存儲到framebuffer中,提升了系統(tǒng)的性能。
本發(fā)明的有益效果和特點為本發(fā)明只是在內(nèi)存中多開辟了一個緩沖寄存器,在沒有增加任何成本的情況下降低了儲存觸摸屏上觸控信息卡屏事件的概率,提高了用戶對屏幕操作的流暢度,改善了用戶體驗。
具體實施方式
下面結(jié)合實施例對本發(fā)明做進一步說明,但不限于此。
實施例
一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,在安卓系統(tǒng)的內(nèi)存中將原有的分配的給存儲觸摸屏觸發(fā)信息的2個緩沖寄存器變?yōu)?個緩沖寄存器,對其進行編號為 bufferO, bufferl, buffer2,該方法步驟如下
I) preProcessEvent O函數(shù)檢查到觸摸屏上有觸控信息時,判斷用戶輸入信息是否投遞,若投遞則調(diào)用onTouchEvent O函數(shù),該函數(shù)讓其新建一個path (路徑)對象,然后將其存到一個緩沖寄存器bufferO中;
2)系統(tǒng)dispatcher函數(shù)在緩沖寄存器上等待,一旦緩沖寄存器bufferO獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器bufferO中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器bufferO中的內(nèi)容清除;
3)在dispatcher函數(shù)和分發(fā)函數(shù)處理上一步中緩沖寄存器bufferO里的信息時, 此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到緩沖寄存器bufferl中;緩沖寄存器bufferl獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器bufferl中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器bufferl中的內(nèi)容清除;
4)若緩沖寄存器bufferO、bufferl中的觸控信息都沒有清除;此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到另外的一個緩沖寄存器 buffer2中,緩沖寄存器buffer2獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器buffer2中的觸控信息傳送到client端(客戶端)進行處理,處理完成后并將緩沖寄存器buffer2中的內(nèi)容清除。
權(quán)利要求
1. 一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,在安卓系統(tǒng)的內(nèi)存中將原有的分配給的存儲觸摸屏觸發(fā)信息的2個緩沖寄存器變?yōu)?個緩沖寄存器,對其進行編號為 bufferO, buffer I,buffer2,該方法步驟如下1)preProcessEvent O函數(shù)檢查到觸摸屏上有觸控信息時,判斷用戶輸入信息是否投遞,若投遞則調(diào)用onTouchEvent O函數(shù),該函數(shù)讓其新建一個路徑對象,然后將其存到一個緩沖寄存器bufferO中;2)系統(tǒng)dispatcher函數(shù)在緩沖寄存器上等待,一旦緩沖寄存器bufferO獲取到信息, 就通過分發(fā)函數(shù)將緩沖寄存器bufferO中的觸控信息傳送到客戶端進行處理,處理完成后并將緩沖寄存器bufferO中的內(nèi)容清除;3)在dispatcher函數(shù)和分發(fā)函數(shù)處理上一步中緩沖寄存器bufferO里的信息時,此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到緩沖寄存器 bufferl中;緩沖寄存器bufferl獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器bufferl中的觸控信息傳送到客戶端進行處理,處理完成后并將緩沖寄存器bufferl中的內(nèi)容清除;4)若緩沖寄存器bufferO、bufferl中的觸控信息都沒有清除;此時屏幕上若有觸控信息時,通過調(diào)用onTouchEvent O函數(shù)將此觸控信息存到另外的一個緩沖寄存器buffer2 中,緩沖寄存器buffer2獲取到信息,就通過分發(fā)函數(shù)將緩沖寄存器buffer2中的觸控信息傳送到客戶端進行處理,處理完成后并將緩沖寄存器buffer2中的內(nèi)容清除。
全文摘要
一種通過多緩沖機制提升安卓系統(tǒng)性能的方法,屬于安卓系統(tǒng)優(yōu)化技術(shù)領(lǐng)域。本發(fā)明在內(nèi)存中多開辟了一個存放屏幕輸入信息的緩沖寄存器和一個framebuffer(幀緩沖寄存器),這樣,當屏幕上有觸控信息時,增加了一個存放觸控信息的緩沖寄存器,降低了儲存觸摸屏上觸控信息會卡事件的概率,提高了用戶對屏幕操作的流暢度,改善了用戶體驗。本發(fā)明只是在內(nèi)存中多開辟了一個緩沖寄存器,在沒有增加任何成本的情況下降低了儲存觸摸屏上觸控信息卡屏事件的概率,提高了用戶對屏幕操作的流暢度,明顯的改善了用戶體驗。
文檔編號G06F9/44GK102929640SQ201210444839
公開日2013年2月13日 申請日期2012年11月8日 優(yōu)先權(quán)日2012年11月8日
發(fā)明者張海霞, 高凱, 袁東風, 徐加利, 徐祥桐, 孫文, 翟慶羽, 紀洪亮, 孫志猛, 王宏賓 申請人:山東大學