CN102929640A - 一种通过多缓冲机制提升安卓***性能的方法 - Google Patents

一种通过多缓冲机制提升安卓***性能的方法 Download PDF

Info

Publication number
CN102929640A
CN102929640A CN2012104448395A CN201210444839A CN102929640A CN 102929640 A CN102929640 A CN 102929640A CN 2012104448395 A CN2012104448395 A CN 2012104448395A CN 201210444839 A CN201210444839 A CN 201210444839A CN 102929640 A CN102929640 A CN 102929640A
Authority
CN
China
Prior art keywords
buffer register
information
buffer
touch
screen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012104448395A
Other languages
English (en)
Other versions
CN102929640B (zh
Inventor
张海霞
高凯
袁东风
徐加利
徐祥桐
孙文
翟庆羽
纪洪亮
孙志猛
王宏宾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201210444839.5A priority Critical patent/CN102929640B/zh
Publication of CN102929640A publication Critical patent/CN102929640A/zh
Application granted granted Critical
Publication of CN102929640B publication Critical patent/CN102929640B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Position Input By Displaying (AREA)

Abstract

一种通过多缓冲机制提升安卓***性能的方法,属于安卓***优化技术领域。本发明在内存中多开辟了一个存放屏幕输入信息的缓冲寄存器和一个framebuffer(帧缓冲寄存器),这样,当屏幕上有触控信息时,增加了一个存放触控信息的缓冲寄存器,降低了储存触摸屏上触控信息会卡事件的概率,提高了用户对屏幕操作的流畅度,改善了用户体验。本发明只是在内存中多开辟了一个缓冲寄存器,在没有增加任何成本的情况下降低了储存触摸屏上触控信息卡屏事件的概率,提高了用户对屏幕操作的流畅度,明显的改善了用户体验。

Description

一种通过多缓冲机制提升安卓***性能的方法
技术领域
本发明涉及一种基于安卓(Android)***中通过增加缓冲器来提升***性能的方法,即一种通过多缓冲机制提升安卓***性能的方法,属于安卓***优化技术领域。
背景技术
伴随着谷歌新版移动操作***Android4.1Jelly Bean的问世,谷歌的Android平台自2010年以来呈现出突飞猛进的发展势头,在全球智能手机市场中所占份额从不到10%一路猛增至50%以上,Android***已经成为移动终端及嵌入式终端***的最大霸主。但是Android***上仍有一些不足,值得工程人员继续对其进行优化。例如,用户在利用触摸屏的Fling、Scroll等Gesture(手势)来操作屏幕,当用户在触摸屏幕上连续进行很多手势时,有时会发现屏幕卡一下,本文就是针对android***中对Touchevent处理时等待时间长甚至出现卡机现象进行优化,以提升***系性能,改善用户体验。
在Android***中,触摸屏每次有触控信息就触发了一系列touch事件ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP,即调用onTouchEvent()函数,在该函数里每有一个down,move,up消息时,都会让其新建一个path对象,然后将其存到一个buffer中,待***检测到这个buffer的内容后对其进行提取、处理;在***检测和处理此buffer中内容的期间,触摸屏上再有触控信息时会按照相同的方式存到另外一个buffer中。通常情况,***处理此buffer中内容的时间会比触摸屏上的触控信息写到buffer中的时间长,因此当触摸屏有比较多的连续触控信息时,就会发生触控信息没有buffer可用来存储的情况,用户就会发现触摸屏上会卡一下。
存储需要显示的帧内容的framebuffer中也会遇到类似发卡的现象。framebuffer用一块特殊的内存来显示当前帪,当内存中的帧信息显示出来后,一个单独完整的部分内存用来添装下一帪。一旦第二帪填充完成,framebuffer被命令找到第二个buffer替代。此时主buffer变成了第二个buffer,第二个buffer也就变成了主buffer。这个操作通常在垂直回归期(verti cal blanking interval)完成,来防止屏幕tearing(旧帪显示一半,新帪显示一半)。由于有时每个buffer里面的内容显示用的时间比较长,就会发生两个buffer都是饱和的情况,***发过来的帧信息无处可存,***就会卡一下。
专利号为CN201110172844.0、发明人为毛德操、王承志、徐鼎鼎、傅唯威、发明名称为《Wine与安卓手机软键盘输入的整合方法》的专利公开了一种Wine与安卓手机软键盘输入的整合方法,本方法解决了Wine和Android/OMS关于软键盘输入的整合问题,同时解决了弹出、关闭软键盘的时机与途径问题。但是此发明对输入的信息的存储方式和信息传递流程没有涉及,本文发明正是从信息存储方面对安卓***进行了优化。
发明内容
针对现有技术的不足,本发明提出一种通过多缓冲机制提升安卓***性能的方法,它是一种基于增加存储触摸屏触发信息的buffer和增加framebuffer中的buffer的方法,以提升***性能。
本发明的技术方案是采用如下方式来实现的。
一种通过多缓冲机制提升安卓***性能的方法,在安卓***的内存中将原有的分配的给存储触摸屏触发信息的2个缓冲寄存器变为3个缓冲寄存器,对其进行编号为buffer0,buffer1,buffer2,该方法步骤如下:
1)preProcessEvent()函数检查到触摸屏上有触控信息时,判断用户输入信息是否投递,若投递则调用onTouchEvent()函数,该函数让其新建一个path(路径)对象,然后将其存到一个缓冲寄存器buffer0中;
2)***dispatcher函数在缓冲寄存器上等待,一旦缓冲寄存器buffer0获取到信息,就通过分发函数将缓冲寄存器buffer0中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer0中的内容清除;
3)在dispatcher函数和分发函数处理上一步中缓冲寄存器buffer0里的信息时,此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到缓冲寄存器buffer1中;缓冲寄存器buffer1获取到信息,就通过分发函数将缓冲寄存器buffer1中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer1中的内容清除;
4)若缓冲寄存器buffer0、buffer1中的触控信息都没有清除;此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到另外的一个缓冲寄存器buffer2中,缓冲寄存器buffer2获取到信息,就通过分发函数将缓冲寄存器buffer2中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer2中的内容清除。
本发明在安卓***的内存中增加一个存储触摸屏触发信息的buffer,并对其进行编号为buffer0,buffer1,buffer2。当触摸屏每次有触控信息时,就调用onTouchEvent()函数,在该函数里每有一个down,move,up消息时,都会让其新建一个path对象,然后依次检测buffer0,buffer1,buffer2是否可存储,将触控信息存到一个可利用的buffer中;当此buffer存满后,触摸屏上又有触控信息时,就将其存到下一个buffer中。***通过dispatcher函数依次检测buffer0,buffer1,buffer2中是否有未处理的的触控信息,当有未处理的触控信息时,***通过分发函数将buffer中的信息传送到客户端处理,处理完成后将此buffer中的内容清除;在此过程中,若触摸屏上有触控信息,就存储到其余的两个buffer中。由于***处理一个buffer中的信息比信息存储到一个buffer中用的时间长,这样,在***处理一个buffer中的信息时候,还有两个buffer可以用来存储触摸屏上的触控信息;因此,降低了储存触摸屏上触控信息会卡事件的概率,提高了用户对屏幕操作的流畅度,改善了用户体验。
依照同样的原理,在存储需要显示的帧内容的framebuffer(帧缓冲器)中增加一个buffer(缓冲寄存器),即由原来的2个buffer变为3个buffer,并且对其编号为buffer0,buffer1,buffer2。当一帧信息过来后,先填充buffer0,当buffer0被填满后,buffer0的帧被调出来显示,显示完成后将此buffer中的内容清除;在buffer0显示的过程中,若再有过来的帧就依次存储到buffer1、buffer2中;待buffer0中的帧显示完成后,framebuffer被命令找到存储完成的buffer1或buffer2替代buffer0,此时主buffer变成了buffer1(或buffer2)。这样需要显示的帧信息能更流畅的存储到framebuffer中,提升了***的性能。
本发明的有益效果和特点为:本发明只是在内存中多开辟了一个缓冲寄存器,在没有增加任何成本的情况下降低了储存触摸屏上触控信息卡屏事件的概率,提高了用户对屏幕操作的流畅度,改善了用户体验。
具体实施方式
下面结合实施例对本发明做进一步说明,但不限于此。
实施例:
一种通过多缓冲机制提升安卓***性能的方法,在安卓***的内存中将原有的分配的给存储触摸屏触发信息的2个缓冲寄存器变为3个缓冲寄存器,对其进行编号为buffer0,buffer1,buffer2,该方法步骤如下:
1)preProcessEvent()函数检查到触摸屏上有触控信息时,判断用户输入信息是否投递,若投递则调用onTouchEvent()函数,该函数让其新建一个path(路径)对象,然后将其存到一个缓冲寄存器buffer0中;
2)***dispatcher函数在缓冲寄存器上等待,一旦缓冲寄存器buffer0获取到信息,就通过分发函数将缓冲寄存器buffer0中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer0中的内容清除;
3)在dispatcher函数和分发函数处理上一步中缓冲寄存器buffer0里的信息时,此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到缓冲寄存器buffer1中;缓冲寄存器buffer1获取到信息,就通过分发函数将缓冲寄存器buffer1中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer1中的内容清除;
4)若缓冲寄存器buffer0、buffer1中的触控信息都没有清除;此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到另外的一个缓冲寄存器buffer2中,缓冲寄存器buffer2获取到信息,就通过分发函数将缓冲寄存器buffer2中的触控信息传送到client端(客户端)进行处理,处理完成后并将缓冲寄存器buffer2中的内容清除。

Claims (1)

1.一种通过多缓冲机制提升安卓***性能的方法,在安卓***的内存中将原有的分配给的存储触摸屏触发信息的2个缓冲寄存器变为3个缓冲寄存器,对其进行编号为buffer0,buffer1,buffer2,该方法步骤如下:
1)preProcessEvent()函数检查到触摸屏上有触控信息时,判断用户输入信息是否投递,若投递则调用onTouchEvent()函数,该函数让其新建一个路径对象,然后将其存到一个缓冲寄存器buffer0中;
2)***dispatcher函数在缓冲寄存器上等待,一旦缓冲寄存器buffer0获取到信息,就通过分发函数将缓冲寄存器buffer0中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer0中的内容清除;
3)在dispatcher函数和分发函数处理上一步中缓冲寄存器buffer0里的信息时,此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到缓冲寄存器buffer1中;缓冲寄存器buffer1获取到信息,就通过分发函数将缓冲寄存器buffer1中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer1中的内容清除;
4)若缓冲寄存器buffer0、buffer1中的触控信息都没有清除;此时屏幕上若有触控信息时,通过调用onTouchEvent()函数将此触控信息存到另外的一个缓冲寄存器buffer2中,缓冲寄存器buffer2获取到信息,就通过分发函数将缓冲寄存器buffer2中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer2中的内容清除。
CN201210444839.5A 2012-11-08 2012-11-08 一种通过多缓冲机制提升安卓***性能的方法 Active CN102929640B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210444839.5A CN102929640B (zh) 2012-11-08 2012-11-08 一种通过多缓冲机制提升安卓***性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210444839.5A CN102929640B (zh) 2012-11-08 2012-11-08 一种通过多缓冲机制提升安卓***性能的方法

Publications (2)

Publication Number Publication Date
CN102929640A true CN102929640A (zh) 2013-02-13
CN102929640B CN102929640B (zh) 2015-10-21

Family

ID=47644452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210444839.5A Active CN102929640B (zh) 2012-11-08 2012-11-08 一种通过多缓冲机制提升安卓***性能的方法

Country Status (1)

Country Link
CN (1) CN102929640B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984640A (zh) * 2010-10-28 2011-03-09 浙江大学 基于凌动处理器的Android手机平台的能耗测量方法
CN102402373A (zh) * 2010-09-15 2012-04-04 ***通信有限公司 一种控制移动终端中触摸键盘的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402373A (zh) * 2010-09-15 2012-04-04 ***通信有限公司 一种控制移动终端中触摸键盘的方法及装置
CN101984640A (zh) * 2010-10-28 2011-03-09 浙江大学 基于凌动处理器的Android手机平台的能耗测量方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
姚玉欣: "基于Windows CE的便携式终端的***软件开发", 《中国优秀硕士学位论文全文数据库》, 15 December 2005 (2005-12-15) *
胡思捷: "基于Android平台的触摸屏***设计及实现", 《中国优秀硕士学位论文全文数据库》, 15 September 2011 (2011-09-15) *

Also Published As

Publication number Publication date
CN102929640B (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
CN109947569B (zh) 绑定核心的方法、装置、终端及存储介质
CN103761306B (zh) 一种智能终端文件清理方法及装置
CN103176689B (zh) 界面切换方法及***
US9129394B2 (en) CPU-GPU parallelization
CN102934068A (zh) 用于联合多个设备的显示器的方法、装置和计算机程序产品
CN105512251B (zh) 一种页面缓存方法和装置
CN106155506B (zh) 一种控制方法及控制装置
CN105302588A (zh) 一种终端应用程序加载方法、装置及终端
CN104268221A (zh) 基于Ios***WebView的翻页方法和翻页***
CN103186919A (zh) 一种文字渲染方法及装置
CN103517154A (zh) 一种视频文件预加载方法及***
CN106791898A (zh) 一种直播视频加载方法和装置
CN104702703B (zh) 一种数据更新方法及装置
CN104615373A (zh) 一种触屏设备退出当前操作的方法及触屏设备
CN103729236A (zh) 一种限制云计算用户资源使用额度的方法
TW200734017A (en) Street machine, play station, and game system
CN106293953A (zh) 一种访问共享显示数据的方法及***
CN102929640A (zh) 一种通过多缓冲机制提升安卓***性能的方法
CN106557434A (zh) 一种界面缓存方法及***
US20150293950A1 (en) Method, apparatus, and storage medium for removing redundant information from terminal
CN106874020A (zh) 启动插件的方法及装置
CN102801726A (zh) 通信***以及客户端与服务端之间的通信方法
GB201318156D0 (en) Server terminal network program and information storage medium
CN104766010A (zh) 一种解决杀毒软件扫描风暴的方法
CN103377071A (zh) 一种数据批量删除方法和***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant