CN102929640B - 一种通过多缓冲机制提升安卓***性能的方法 - Google Patents
一种通过多缓冲机制提升安卓***性能的方法 Download PDFInfo
- Publication number
- CN102929640B CN102929640B CN201210444839.5A CN201210444839A CN102929640B CN 102929640 B CN102929640 B CN 102929640B CN 201210444839 A CN201210444839 A CN 201210444839A CN 102929640 B CN102929640 B CN 102929640B
- Authority
- CN
- China
- Prior art keywords
- buffer register
- information
- touch
- function
- 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.)
- Active
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、buffer1、buffer2三个缓冲寄存器上等待,一旦缓冲寄存器buffer0获取到信息,就通过分发函数将缓冲寄存器buffer0中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer0中的内容清除;
3)在dispatcher函数和分发函数处理上一步中缓冲寄存器buffer0里的信息时,此时屏幕上若有触控信息时,通过调用onTouchEvent( )函数将此触控信息存到缓冲寄存器buffer1中;缓冲寄存器buffer1获取到信息,就通过分发函数将缓冲寄存器buffer1中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer1中的内容清除;
4)若缓冲寄存器buffer0、buffer1中的触控信息都没有清除;此时屏幕上若有触控信息时,通过调用onTouchEvent( )函数将此触控信息存到另外的一个缓冲寄存器buffer2中,缓冲寄存器buffer2获取到信息,就通过分发函数将缓冲寄存器buffer2中的触控信息传送到客户端进行处理,处理完成后并将缓冲寄存器buffer2中的内容清除。
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 CN102929640A (zh) | 2013-02-13 |
CN102929640B true 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)
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 | ***通信有限公司 | 一种控制移动终端中触摸键盘的方法及装置 |
-
2012
- 2012-11-08 CN CN201210444839.5A patent/CN102929640B/zh active Active
Patent Citations (2)
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)
Title |
---|
基于Android平台的触摸屏***设计及实现;胡思捷;《中国优秀硕士学位论文全文数据库》;20110915;正文第5-6章 * |
基于Windows CE的便携式终端的***软件开发;姚玉欣;《中国优秀硕士学位论文全文数据库》;20051215;正文第2-4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN102929640A (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9129394B2 (en) | CPU-GPU parallelization | |
CN109947569B (zh) | 绑定核心的方法、装置、终端及存储介质 | |
CN105512251B (zh) | 一种页面缓存方法和装置 | |
CN106155506B (zh) | 一种控制方法及控制装置 | |
CN103176689A (zh) | 界面切换方法及*** | |
CN108959117B (zh) | H2d写操作加速方法、装置、计算机设备及存储介质 | |
MY165068A (en) | Memory controller and method of selecting a transaction using a plurality of ordered lists | |
CN104750620B (zh) | 一种内存迁移方法及装置 | |
CN103930874A (zh) | 使用经调度资源组转变通过对便携式计算装置的工作负载估计而节省功率 | |
CN103003791A (zh) | 分配共享堆栈的部分的***和方法 | |
CN104808952A (zh) | 数据缓存方法及装置 | |
US20160094768A1 (en) | Systems and methods of selective output for reducing power | |
CN106293953B (zh) | 一种访问共享显示数据的方法及*** | |
CN102929640B (zh) | 一种通过多缓冲机制提升安卓***性能的方法 | |
US9839064B2 (en) | Sensor data collecting device | |
CN107506293B (zh) | 一种软件性能数据采集方法和装置 | |
CN104679493A (zh) | 一种流程化的事件处理机制的改进方法 | |
CN104881444A (zh) | 网站中更新缓存服务器的方法及*** | |
CN105653610A (zh) | 一种快速显示大容量数据信息的方法 | |
CN104516829A (zh) | 微处理器及使用指令循环高速缓存的方法 | |
US20190180405A1 (en) | Thread Independent Scalable Video Graphics Operations | |
CN103019739A (zh) | 重定位表的修复方法、程序脱壳方法及相关装置 | |
CN102902735A (zh) | 一种交互式网络电视iptv搜索缓存方法和*** | |
CN103377071A (zh) | 一种数据批量删除方法和*** | |
CN109660471A (zh) | 基于fpga的指针回收方法及装置 |
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 |