CN102999386B - 一种通过在单进程中实现多消息队列机制提升性能的方法 - Google Patents
一种通过在单进程中实现多消息队列机制提升性能的方法 Download PDFInfo
- Publication number
- CN102999386B CN102999386B CN201210445839.7A CN201210445839A CN102999386B CN 102999386 B CN102999386 B CN 102999386B CN 201210445839 A CN201210445839 A CN 201210445839A CN 102999386 B CN102999386 B CN 102999386B
- Authority
- CN
- China
- Prior art keywords
- message
- priority
- message queue
- thread
- sub
- 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
Abstract
通过在单进程中实现多消息队列机制提升性能的方法,属移动终端的操作系统技术领域。本发明主要特点是改变单线程单消息队列的做法,增加单个线程的消息队列,并在多个消息队列间划分优先级,将接收到的响应消息按紧急程度存入不同优先级的消息队列,消息队列按照优先级先后处理,从而实现消息的智能处理。本发明优化了Android系统原有的消息循环机制,可以减少用户操作Android系统的延迟、滞后,提高用户响应的速度,保证系统的运行性能。
Description
技术领域
本发明涉及一种通过在单进程中实现多消息队列机制提升性能的方法,属移动终端的操作系统技术领域。
背景技术
Android是Google发布的基于Linux平台的开源移动操作系统的名称,是现在移动终端和各种嵌入式终端主流的操作系统。
但Android系统在响应某些用户操作时,会出现系统性能降低的情况。例如响应点击操作的动画效果滞后;界面切换有延迟等。在Android系统的内部机制中,处理此类用户交互操作的是UI主线程。由UI主线程的子线程接收用户的操作,将各种操作事件转换为消息传送给UI主线程的消息队列进行存储管理,再按照一定的顺序进行处理。所以消息的处理速度决定用户响应的速度,进而决定系统性能。
Android系统现在采用的消息循环机制,包括Handler模块和Looper模块两部分,主要特征是单线程单消息队列。Handler模块负责将消息存入消息队列,Looper模块负责消息队列的循环执行。具体内容可参考张元亮编著的2011版《Android开发应用实战详解》第二章节关于Android线程的阐述。
消息循环机制中每个线程最多拥有1个消息队列,而且没有优先级方面的考虑。不同种类的消息都是按照“先入先出”在1个队列里顺序执行,当处理紧急响应的消息时,如果前面的非紧急消息处理时间较长,会造成紧急响应的延迟,影响用户响应的速度,进而降低系统性能。
发明内容
针对现有技术存在的不足,本发明提供一种通过在单进程中实现多消息队列机制提升性能的方法,以解决Android系统处理用户响应的过程中,不能优先保证紧急响应消息的处理,影响用户响应的速度,降低系统性能的问题。该方法通过增加单个线程的消息队列,并在多个消息队列间划分优先级,将UI主线程接收到的响应消息按紧急程度存入不同优先级的消息队列,消息队列按照优先级先后处理,从而实现消息的智能处理。
本发明的技术方案如下:
一种通过在单进程中实现多消息队列机制提升性能的方法,应用在Android系统中,该系统包括带优先级判断功能的Handler模块和带多消息队列管理功能的Looper模块两部分,Handler模块用于把消息按照紧急程度存入对应优先级的消息队列中,并负责收发消息队列中待处理的消息;Looper模块用于管理多个消息队列的循环和执行;Handler模块包括优先级判断单元和消息收发单元,其中优先级判断单元用于消息优先级的判断,消息收发单元用于把消息传送到消息队列及把待处理的消息传送给执行的子线程;Looper模块包括优先级管理单元和循环执行单元,其中优先级管理单元用于激活有存储消息的高优先级消息队列、封存低优先级的消息队列;循环执行单元用于选定循环执行的消息队列,该方法步骤如下:
1)子线程Handler模块接收用户的响应消息
由UI主线程的子线程Handler模块的消息收发单元响应用户的操作,然后转换成消息等待发送;
2)子线程Handler模块判断消息的优先级
在UI主线程的子线程Handler模块的优先级判断单元进行优先级消息的判断,如将优先级设为3个,分为Normal,High,Very High 3个等级,Normal优先级最低,Very High优先级最高;(不限于此,实际应用中优先级可多可少,此处以方便叙述为例。)
3)子线程Handler模块传送消息至UI主线程
由子线程Handler模块的消息收发单元进行,消息在UI主线程对应优先级的消息队列中进行存储待处理;
4)UI主线程按优先级管理多消息队列
其步骤为:
a)Looper模块判断优先级最高的消息队列是否为空,若为空则转到下一步,否则等待,再次判断优先级最高的消息队列是否为空;
b)Looper模块判断下一优先级的消息队列是否为空,若为空则等待,再次判断下一优先级的消息队列是否为空,否则转到下一步;
c)Looper模块选择此优先级的消息队列,按“先入先出”的原则进行处理;
d)Handler模块发送待处理的消息至处理子线程;
e)转到步骤a)。
本发明方法改变了Android系统原有的单线程单消息队列机制,主要特点是增加单个线程的消息队列,并在多个消息队列间划分优先级。通过这种方法实现消息的按优先级智能处理,减少用户操作Android系统的延迟、滞后,提高用户响应的速度,保证系统的运行性能。
附图说明
具体实施方式
下面结合实施例对本发明做进一步的说明,但不限于此。
实施例:
一种通过在单进程中实现多消息队列机制提升性能的方法,应用在Android系统中,该系统包括带优先级判断功能的Handler模块和带多消息队列管理功能的Looper模块,Handler模块用于把消息按照紧急程度存入对应优先级的消息队列中,并负责收发消息队列中待处理的消息;Looper模块用于管理多个消息队列的循环和执行;Handler模块包括优先级判断单元和消息收发单元,其中优先级判断单元用于消息优先级的判断,消息收发单元用于把消息传送到消息队列及把待处理的消息传送给执行的子线程;Looper模块包括优先级管理单元和循环执行单元,其中优先级管理单元用于激活有存储消息的高优先级消息队列、封存低优先级的消息队列;循环执行单元用于选定循环执行的消息队列,该方法步骤如下:
1)子线程Handler模块接收用户的响应消息
由UI主线程的子线程Handler模块的消息收发单元响应用户的操作,然后转换成消息等待发送;
2)子线程Handler模块判断消息的优先级
在UI主线程的子线程Handler模块的优先级判断单元进行优先级消息的判断,如将优先级设为3个,分为Normal,High,Very High 3个等级,Normal优先级最低,Very High优先级最高;(不限于此,实际应用中优先级可多可少,此处以方便叙述为例。)
3)子线程Handler模块传送消息至UI主线程
由子线程Handler模块的消息收发单元进行,消息在UI主线程对应优先级的消息队列中进行存储待处理;
4)UI主线程按优先级管理多消息队列
其步骤为:
a)Looper模块判断优先级最高的消息队列是否为空,若为空则转到下一步,否则等待,再次判断优先级最高的消息队列是否为空;
b)Looper模块判断下一优先级的消息队列是否为空,若为空则等待,再次判断下一优先级的消息队列是否为空,否则转到下一步;
c)Looper模块选择此优先级的消息队列,按“先入先出”的原则进行处理;
d)Handler模块发送待处理的消息至处理子线程;
e)转到步骤a)。
Claims (1)
1.一种通过在单进程中实现多消息队列机制提升性能的方法,应用在Android系统中,该系统包括带优先级判断功能的Handler模块和带多消息队列管理功能的Looper模块两部分,Handler模块用于把消息按照紧急程度存入对应优先级的消息队列中,并负责收发消息队列中待处理的消息;Looper模块用于管理多个消息队列的循环和执行;Handler模块包括优先级判断单元和消息收发单元,其中优先级判断单元用于消息优先级的判断,消息收发单元用于把消息传送到消息队列及把待处理的消息传送给执行的子线程;Looper模块包括优先级管理单元和循环执行单元,其中优先级管理单元用于激活有存储消息的高优先级消息队列、封存低优先级的消息队列;循环执行单元用于选定循环执行的消息队列,该方法步骤如下:
1)子线程Handler模块接收用户的响应消息
由UI主线程的子线程Handler模块的消息收发单元响应用户的操作,然后转换成消息等待发送;
2)子线程Handler模块判断消息的优先级
在UI主线程的子线程Handler模块的优先级判断单元进行优先级消息的判断;
3)子线程Handler模块传送消息至UI主线程
由UI主线程的子线程Handler模块的消息收发单元进行,消息在UI主线程对应优先级的消息队列中进行存储待处理;
4)UI主线程按优先级管理多消息队列
其步骤为:
a)Looper模块判断优先级最高的消息队列是否为空,若为空则转到下一步,否则等待,再次判断优先级最高的消息队列是否为空;
b) Looper模块判断下一优先级的消息队列是否为空,若为空则等待,再次判断下一优先级的消息队列是否为空,否则转到下一步;
c)Looper模块选择此优先级的消息队列,按“先入先出”的原则进行处理;
d) Handler模块发送待处理的消息至处理子线程;
e) 转到步骤a)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210445839.7A CN102999386B (zh) | 2012-11-08 | 2012-11-08 | 一种通过在单进程中实现多消息队列机制提升性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210445839.7A CN102999386B (zh) | 2012-11-08 | 2012-11-08 | 一种通过在单进程中实现多消息队列机制提升性能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999386A CN102999386A (zh) | 2013-03-27 |
CN102999386B true CN102999386B (zh) | 2015-05-27 |
Family
ID=47927987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210445839.7A Active CN102999386B (zh) | 2012-11-08 | 2012-11-08 | 一种通过在单进程中实现多消息队列机制提升性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102999386B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951287B (zh) * | 2014-03-26 | 2018-09-11 | 可牛网络技术(北京)有限公司 | 一种生成网页的方法及装置 |
CN104391752B (zh) * | 2014-12-04 | 2019-01-18 | 中国电子科技集团公司第四十一研究所 | 一种多优先级的线程消息处理方法 |
CN104506642B (zh) * | 2014-12-30 | 2018-06-22 | 深圳市兰丁科技有限公司 | 一种客户端消息高效的收发和处理方法及系统 |
CN105824533B (zh) * | 2016-03-21 | 2019-06-18 | 青岛海信移动通信技术股份有限公司 | 一种图片加载方法、装置及终端 |
CN107277780B (zh) | 2016-04-07 | 2020-11-20 | 中兴通讯股份有限公司 | 一种广播消息发送方法及装置、移动终端 |
CN106201724A (zh) * | 2016-07-14 | 2016-12-07 | 乐视控股(北京)有限公司 | 一种虚拟现实vr设备及其用户界面ui事件的处理方法 |
CN106303063A (zh) * | 2016-08-29 | 2017-01-04 | Tcl移动通信科技(宁波)有限公司 | 一种移动终端显示亮度调节方法及系统 |
CN106354573A (zh) * | 2016-08-29 | 2017-01-25 | 汉柏科技有限公司 | 一种基于优先级队列的进程间通信方法及装置 |
CN106598725A (zh) * | 2016-10-31 | 2017-04-26 | 武汉斗鱼网络科技有限公司 | 一种基于Android的Handler防内存泄漏装置及方法 |
CN106708614B (zh) * | 2016-11-21 | 2019-12-10 | 桂林远望智能通信科技有限公司 | 多线程创建系统及方法、多线程处理系统及方法 |
CN106951332A (zh) * | 2017-03-01 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 消息调度方法和装置 |
CN106933686A (zh) * | 2017-03-10 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种调整广播消息队列的方法、装置及终端 |
CN107506184A (zh) * | 2017-08-07 | 2017-12-22 | 上海青橙实业有限公司 | 系统应用消息的处理方法和装置 |
CN107391283A (zh) * | 2017-08-16 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种消息处理方法及装置 |
CN113132121B (zh) * | 2019-12-30 | 2023-01-31 | 成都鼎桥通信技术有限公司 | 广播消息的处理方法、装置和终端设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438029A (zh) * | 2010-09-29 | 2012-05-02 | 卓望数码技术(深圳)有限公司 | 一种实现Android手机远程交互的控制方法及系统 |
CN102541881A (zh) * | 2010-12-17 | 2012-07-04 | 联想(北京)有限公司 | 文件预览图像的显示方法和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110313861A1 (en) * | 2010-06-22 | 2011-12-22 | Sprezzat! Inc. | Mobile advertising relay system (mars) |
-
2012
- 2012-11-08 CN CN201210445839.7A patent/CN102999386B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438029A (zh) * | 2010-09-29 | 2012-05-02 | 卓望数码技术(深圳)有限公司 | 一种实现Android手机远程交互的控制方法及系统 |
CN102541881A (zh) * | 2010-12-17 | 2012-07-04 | 联想(北京)有限公司 | 文件预览图像的显示方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102999386A (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999386B (zh) | 一种通过在单进程中实现多消息队列机制提升性能的方法 | |
US10365957B2 (en) | Multicasting of event notifications using extended socket for inter-process communication | |
CN103888441B (zh) | 一种应用程序与协议栈之间的信息传输方法及处理装置 | |
TWI592802B (zh) | 熱調適服務品質等級 | |
KR101565865B1 (ko) | 멀티 프로세서 코어 시스템 내의 프로세서 코어를 스케줄링 하기 위한 방법, 장치, 및 시스템 | |
EP2466824A1 (en) | Service scheduling method and device | |
CN102594691B (zh) | 一种处理报文的方法及装置 | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
CN112910802B (zh) | 一种报文处理方法及装置 | |
US9342354B2 (en) | Systems and methods for providing safe confluence modality | |
KR20150037943A (ko) | 클라우드 프로세스 관리 | |
CN102970202A (zh) | 基于抢占式策略的1553b总线通信方法 | |
CN113660173B (zh) | 一种流量控制方法、装置、计算机设备及存储介质 | |
CN111209123A (zh) | 一种本地存储io协议栈数据交互方法和装置 | |
CN103200257A (zh) | 一种高可用集群系统中的节点及其资源切换方法 | |
US20080126613A1 (en) | Autonomic threading model switch based on input/output request type | |
WO2021259321A1 (zh) | 存储调度方法、设备和存储介质 | |
US20090225767A1 (en) | Network packet capturing method | |
KR101890046B1 (ko) | 전력 소비 감소를 위한 동시적 네트워크 애플리케이션 스케줄링 | |
CN105320563A (zh) | 一种进程调度优化方法 | |
CN113157465A (zh) | 基于指针链表的消息发送方法及装置 | |
WO2023202127A1 (zh) | 应用管控方法、装置、存储介质以及电子设备 | |
CN105677487B (zh) | 一种控制资源占用的方法及装置 | |
CN115695330B (zh) | 嵌入式系统中微程的调度系统、方法、终端及存储介质 | |
CN109729014B (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 |