手机应用程序运行状态的管理方法和系统的制作方法

文档序号:6470368阅读:183来源:国知局
专利名称:手机应用程序运行状态的管理方法和系统的制作方法
技术领域
本发明涉及计算机软件技术,更具体地说,是一种手机应用程序运行状 态的管理方法和系统。
背景技术
手机是一种典型的资源受限系统,主要体现在CPU处理能力比较弱和内存容量有限,另外,手机还对功耗有很严格的要求,希望尽量提高电池的续 航时间。现代的智能手机往往是一个多任务的系统,系统中会同时运行多个 应用程序以完成各种任务。因此,对系统中运行着的应用程序的状态进行管 理,让应用程序可以根据自己当前的运行状态决定自己执行的操作,减小在 当前运行状态下不必要的操作就变得比较重要。通过对应用程序运行状态的管理,既可以减小不必要的操作对CPU处理能力的占用,也可以减小这些操作引起的相关电量消耗,另外在内存资源不足的情况下,系统还可以根据应用程序的运行状态选择可以终止的应用程序终止,以释;^文内存资源,保证系 统的稳定。目前智能手机上对应用程序运行状态的管理方法主要有以下几种(1) 只对应用程序"正在启动中"和"已经启动运行,,这两种状态进行 管理。这种应用程序运行状态的管理方式的缺点是,许多应用程序虽然处于"已经启动运行"状态,但4艮可能其实是在后台运行,由于应用程序无法知 道自己到底是在前台还是在后台运行,因此会出现该应用程序虽然在后台运 行却仍然在做界面更新的操作,而实际上由于这些程序不需要出现在前台, 因此界面更新及相关的操作都是不必要的操作。(2) 对应用程序的状态进一步区分出"运行"、"暂停"、"恢复"和"停 止"等状态并进行管理,但是这种状态管理不适应于多任务系统,在多任务 系统中,4艮多处于后台的应用程序仍然处于正常运行状态,并没有处于"暂停"或"停止"状态,只是从减少对系统CPU和电量消耗角度出发,不执行与用户交互的相关操作(例如更新界面、监听按^:输入等)而已,但应用程 序的控制流程仍然在正常运行。因此,对应用程序的"运行"、"暂停"、"恢 复"和"停止"等状态进行管理,这在多任务环境下,是不能达到减小对CPU 处理能力的占用和电量消耗的目的的。(3)对应用程序的运行状态划分为"前台"、"后台",但是现有的基于前台/后台的这种状态管理并不完善,主要体现在a)在这种管理系统中, 应用程序只能接收到其被显示出来的通知(即处于前台),但当被另一个应用 程序的界面所遮盖时,无法得到自己被隐藏的通知消息(即处于后台),因此, 仍然会进行界面更新及相关的操作;b)在这种管理系统中,使用广播机制来 通知应用程序处于"前台"或"后台"运行状态的变化。由于手机的屏幕大 小有限, 一般只有一个应用程序处于前台状态,其它运行的应用程序都处在 后台状态。采用广播机制会对系统中其它本来不需要到前台运行的程序进行 判断,对本来不需要运行的不相关的程序进行处理,不必要地消耗系统资源; c)在这种管理系统中,所有应用程序的"前台"、"后台"状态信息没有集中 保存到系统的应用管理器中。当系统的内存资源不足,应用管理器需要把不 重要的应用程序终止时,可能会错误地选择正在前台运行的应用程序来终止。发明内容本发明要解决的技术问题是提供了 一种在多任务手机系统上的应用程序 运行状态的管理系统和方法,以解决现有技术中的管理方式对CPU、电量和内存不必要开销太多这一技术问题。为解决上述技术问题,本发明提供一种手机应用程序运行状态的管理方 法,其中,所述手机中包括窗口管理器模块,应用管理器模块, 一个或多个 应用程序在其中运行,每个应用程序分别调用一个客户端代理模块,所述方法包括如下步骤A、 应用程序调用客户端代理模块提供的窗口操作函数向窗口管理器模 块发出操作请求;B、 窗口管理器模块根据所述的操作请求执行相应的操作,并根据操作结果向应用管理器模块发送状态切换消息;C、 应用管理器模块依据所述状态切换消息,向客户端代理模块发送应 用程序运行状态变化的消息;D、 客户端代理模块将应用程序运行状态变化的消息通知给调用该客户 端代理模块的应用程序。进一步地,上述方法还可具有以下特点所述状态切换消息中包含改变前顶层窗口 ID及所属的应用程序ID、改 变后顶层窗口 ID及所属的应用程序ID,若改变前顶层窗口所属的应用程序 ID和改变后顶层窗口所属的应用程序ID相同,则所述状态切换消息为进程 内窗口切换消息;否则,所述状态切换消息为应用程序的前后台切换消息。进一步地,上述方法还可具有以下特点步骤B中具体包括如下步骤如果操作请求中改变之前和改变之后的顶层窗口不属同一进程,则向应 用管理器模块发送应用程序的前后台切换消息;若属于同一进程,则向应用 管理器模块发送进程内切换消息。进一步地,上述方法还可具有以下特点所述应用管理器模块收到的所述状态切换消息为进程内切换消息时,所 述步骤C具体包括如下步骤根据所述应用程序的ID向该应用程序调用的客户端代理模块发送应用 程序运行状态变化的消息,该消息中包含改变之前和改变之后顶层窗口 ID。进一步地,上述方法还可具有以下特点所述应用管理器模块收到的所述状态切换消息为应用程序的前后台切换 消息时,所述步骤C具体包括如下步骤修改所述应用管理器模块中改变前顶层窗口所属应用程序和改变后顶层 窗口所属应用程序的运行状态变量;向改变前顶层窗口所属应用程序调用的 客户端代理模块发送应用程序运行状态变化的消息,该消息中包括改变前顶 层窗口ID;以及,向改变后顶层窗口所属应用程序调用的客户端代理^t块发送应用程序运行状态变化的消息,该消息中包括改变后顶层窗口 ID。 进一步地,上述方法还可具有以下特点所述运行状态包括"正在启动中"、"前台运行"、"后台运行"、"未运行"。为了解决上述技术问题,本发明还提出一种手机应用程序运行状态的管 理系统,其中所述窗口管理器模块,用于管理应用程序创建的窗口,接收客户端代理 模块发来的操作请求,按照该操作请求管理应用程序创建的窗口,并向应用 管理器模块发送状态切换消息;所述应用管理器模块,用于对窗口管理器模块发来的状态切换消息进行 处理并向客户端代理模块发送应用程序运行状态的消息;所述一个或多个客户端代理模块,用于处理应用管理器模块发来的应用 程序运行状态的消息,并通过窗口操作函数通知其对应的应用程序运行状态 变化的消息;还用于构建其对应的应用程序的运行状态操作请求,并将所述 操作请求传递给窗口管理器模块。进一步地,上述系统还可具有以下特点所述运行状态包括"正在启动中"、"前台运行"、"后台运行"、"未运行"。 进一步地,上述系统还可具有以下特点所述状态切换消息中包含改变前顶层窗口 ID及所属的应用程序ID、改 变后顶层窗口 ID及所属的应用程序ID,若改变前顶层窗口所属的应用程序 ID和改变后顶层窗口所属的应用程序ID相同,则所述状态切换消息为进程 内窗口切换消息;否则,所述状态切换消息为应用程序的前后台切换消息。进一步地,上述系统还可具有以下特点所述窗口管理器^t块还用于在操作请求中改变之前和改变之后的顶层窗 口不属同一进程时,向应用管理器模块发送应用程序的前后台切换消息;在 属于同一进程时,则窗口向应用管理器模块发送进程内切换消息;所述应用管理器模块还用于在收到应用程序的前后台切换消息时,修改 所述应用管理器模块中改变前顶层窗口所属应用程序和改变后顶层窗口所属应用程序的运行状态变量,向改变前顶层窗口所属应用程序调用的客户端代 理模块发送应用程序运行状态变化的消息,该消息中包括改变前顶层窗口ID,以及,向改变后顶层窗口所属应用程序调用的客户端代理模块发送应用 程序运行状态变化的消息,该消息中包括改变后顶层窗口 ID;在收到进程内 切换消息时,根据所述应用程序的ID向该应用程序调用的客户端代理模块 发送应用程序运行状态变化的消息,该消息中包含改变之前和改变之后顶层 窗口 ID。综上所述,本发明提供了 一种手机应用程序运行状态的管理方法和系统, 引入了应用程序的四种运行状态的概念,把系统中所有应用程序的运行状态 集中在应用管理器;f莫块中统一管理,并采用点对点的方式通知应用程序其运 行状态的变化信息。通过这些措施,降低了在多任务手机系统上后台运行的 应用程序对CPU处理能力和电量及内存的不必要消耗。


图l是本发明的系统结构框图;图2是本发明的窗口管理器模块的处理流程图;图3是本发明的应用管理器模块的处理流程图;图4是本发明的客户端代理模块从应用管理器模块到应用程序的处理流 程图;图5是应用程序将窗口变化通知本发明的系统的处理流程图; 图6是本发明的一个具体实施的结构框图。
具体实施方式
本发明的系统中包括窗口管理器模块,应用管理器模块,由每个应用程 序分别调用的客户端代理模块,在应用程序的窗口状态发生变化时,应用程 序调用客户端代理模块提供的窗口操作函数向窗口管理器模块发出操作请 求;窗口管理器模块根据所述的操作请求执行相应的操作,并根据操作结果 向应用管理器模块发送状态切换消息;应用管理器模块依据所述状态切换消息,向客户端代理模块发送应用程序运行状态变化的消息;客户端代理模块 将应用程序运行状态变化的消息通知给调用该客户端代理模块的应用程序。 从而实现对应用程序窗口的管理。下面,结合附图,对本发明的具体实施方 式进行详细描述。如附图1所示,本发明的系统包括如下部分窗口管理器模块,用于管理应用程序创建的窗口,主要包括窗口之间的 显示层次顺序,即哪个窗口显示在最上面,每个窗口的下面是哪个窗口,和 窗口显示在屏幕上的位置、大小等;接收客户端代理模块发来的操作请求, 按照该操作请求管理应用程序创建的窗口 ,并向应用管理器模块发送应用程 序的前后台切换消息或进程内窗口切换消息,在本专利中,这两个消息统称 为状态切换消息。窗口管理器模块的处理流程如图2所示,分为如下步骤Sl窗口管理器模块接收客户端代理模块发来的窗口操作的请求;S2根据该操作请求,判断可见窗口是否发生改变,如果是则转S3,否 则,转S4,流程终结;S3判断改变之前和改变之后的顶层窗口属同一进程,如果不是,则转 步骤S31,向应用管理器模块发送应用程序的前后台切换消息;如果是,转 步骤S32,向应用管理器模块发送进程内窗口切换消息;应用管理器模块,用于对窗口管理器模块发来的状态切换消息进行处理 并向客户端代理模块发送应用程序运行状态变化的消息。应用程序的运行状 态主要包括"正在启动中"、"前台运行"、"后台运行"、"未运行"这四种情 况,应用管理器模块负责根据应用程序的运行状态以及收到的状态切换消息, 通it^户端代理模块启动/停止应用程序。如附图3所示,是本发明应用管理器模块的处理流程图,具体包含以下 步骤S5接收窗口管理器模块发来的状态切换消息;S6判断状态切换消息的类型,若是进程内窗口切换消息,则转S7,向对应的应用程序中的客户端代理模块发送应用程序运行状态在前台但窗口发生了切换的消息;若是应用程序的前后台切换消息,则转S8,根据切换消息 中的进程号向对应的应用程序中的客户端代理模块发送运行状态变成"前台" 或"后台"的消息。所述的应用程序运行状态在前台但窗口发生了切换的消息以及运行状态 变成"前台"或"后台"的消息在本专利中统称为应用程序运行状态变化的 消息。客户端代理模块,用于处理应用管理器模块发来的状态切换消息,并通 过窗口操作函数通知应用程序运行状态变为"前台"、"后台"或"仍为前台 但顶层窗口发生了变化";客户端代理模块还用于接收应用程序的运行状态操 作请求,这些请求包括显示、隐藏、窗口的层次变化、窗口的大小/位置改变 等,并由客户端代理模块将该操作请求传递给窗口管理器模块。客户端代理 模块是与应用程序编译连接在一起运行的,每个应用程序都分别调用 一个客 户端代理才莫块。其处理流程如下如附图4所示,是本发明客户端代理模块从应用管理器模块到应用程序 的处理流程图,具体包含以下步骤S10客户端代理模块接收应用管理器模块发来的消息;Sll若是运行状态变为后台的消息,则通过窗口操作函数通知应用程序 运行状态变为"后台",转S14;S12若是运行状态变为前台的消息,则通过窗口操作函数通知应用程序 运行状态变为"前台",转S14;S13若是顶层窗口发生了变化的消息,则通过窗口操作函数通知应用程 序运行状态变为"仍为前台但顶层窗口发生了变化",转S14;S14流程结束。如附图5所示,是应用程序将窗口变化通知本发明的系统的处理流程图, 具体包含以下步骤S15应用程序调用客户端代理模块提供的窗口操作函数使客户端代理模块构造相应的操作请求,该操作请求包括显示窗口、隐藏窗口、窗口的层次变化、窗口的大小、位置改变等;S16客户端代理模块把S15中的操作请求传递到窗口管理器模块。下面结合附图6对本发明进行详细说明,附图6是本发明在Linux上的 gtk+/Xl 1的一个实现案例,gtk+是一个用于创建图形用户界面的多平台工具, Xll为一种支持Linux系统的服务器(以下简称Xll Server )。如图6所示,客户端代理模块在gtk +库基础上实现。其中,gtk +库提 供的窗口操作函数(API)直接作为客户端代理模块的API提供给应用程序 使用。另外,客户端代理模块利用gtk +库的signal机制(信号机制)向应用 程序传递其运行状态变化情况,其基本原理是在gtk +库的GtkWindow对 象中增加一个信号Run—state,这个信号在应用程序的运行状态发生变化时 由客户端代理模块发出,应用程序通过把自己的回调函数连接到所有的 GtkWindow对象的这个信号上,这样就可以得知并处理客户端模块发给它的 各种消息。客户端代理模块到窗口管理器模块之间的通信通过Xll Server进行转 发。即客户端代理模块的窗口操作函数(即gtk +库提供的窗口操作函数) 把操作请求以X协议方式发送到Xll Server。窗口管理器模块通过X协议的 重定向功能来向Xll Server要求拦截这些窗口操作,这样,当Xll Server收 到客户端代理模块的操作请求时就转发给窗口管理器模块,从而实现了客户 端代理模块到窗口管理器模块之间的通信。窗口管理器模块到应用管理器模块,应用管理器模块与客户端代理模块 之间的通信釆用Linux操作系统提供的本地socket通信机制来完成。根据图6所示的实施例,包括应用程序、客户端代理模块、XllServer、 窗口管理器模块、应用管理器模块,本系统的运作机制如下所述应用程序调用客户端代理模块的窗口操作函数,即gtk +库提供的窗口 操作函数,构建操作请求,请求对自己的窗口进行操作。gtk +库以X协议方 式通过Xll Server最终把应用程序的操作请求发送到窗口管理器模块。窗口 管理器模块收到从客户端代理模块发送来的应用程序的操作请求后,按照状态管理策略对操作请求进行处理,如果解析出操作请求中包含了发生了顶层窗口的变化的信息,窗口管理器模块则通过与应用管理器模块之间的socket 连接发送状态切换消息,该消息中包含改变前顶层窗口 ID及所属的应用程 序ID、改变后顶层窗口 ID及所属的应用程序ID;否则,流程结束。应用管理器模块收到状态切换消息后,判断消息中的两个应用程序的 ID。如果这两个应用程序的ID相同(表明状态切换消息为进程内窗口切换 消息),就构建一条应用程序运行状态在前台但窗口发生了切换的消息,消息 中包含改变之前和改变之后顶层窗口 ID,应用管理器模块根据应用程序的ID 找到与相应的客户端代理模块之间的socket连接,通过这个socket连接把应 用程序运行状态在前台但窗口发生了切换的消息发送到相应应用程序的客户 端代理模块中,相应应用程序中的客户端代理模块会从socket中收到该消息, 从消息中取出改变前和改变后的窗口 ID,再利用gtk +库提供的功能,由窗 口 ID分别得到对应的GtkWindow对象,然后这两个GtkWindow对象发出 "Run—State"这个信号,这会导致应用程序连接在这些信号上的回调函数被 执行,应用程序就可以在回调函数中处理客户端代理模块发给自己的状态切 换消息,流程结束。如果应用程序的ID不相同(表明状态切换消息为应用程序的前后台切 换消息),就修改自己内部记录应用程序运行状态的数据结构,通过应用程序 的ID找到对应的应用程序运行状态变量进行修改,对于改变前顶层窗口对 应的应用程序ID,应用管理器模块找到与相应的客户端代理模块之间的 socket连接,通过这个socket连接把退到后台运行的消息(消息中包含改变 前顶层窗口 ID)发送到相应程序的客户端代理模块中,相应应用程序中的客 户端代理模块会从socket中收到退到后台运行的消息,从消息中取出改变前 的窗口 ID,再利用gtk +库提供的功能,由窗口 ID分别得到对应的GtkWindow 对象,然后在这个GtkWindow对象上发出"Run—State"这个信号,这会导 致应用程序连接在这个信号上的回调函数被执行,应用程序就可以在回调函 数中处理客户端代理模块发给自己的运行状态变成后台的消息,流程结束。 对于改变后顶层窗口对应的应用程序的ID,应用管理器模块找到与相应的客 户端代理模块之间的socket连接,通过这个socket连接把到前台运行的消息(消息中包含改变后顶层窗口 ID)发送到相应程序的客户端代理模块中,相 应应用程序中的客户端代理模块会从socket中收到前台运行的消息,从消息 中取出改变后窗口 ID,再利用gtk +库提供的功能,由窗口 ID得到对应的 GtkWindow对象,然后在这个GtkWindow对象发出"Run—State"这个信号, 这会导致应用程序连接在这个信号上的回调函数被执行,应用程序就可以在 回调函数中处理客户端代理模块发给自己的运行状态变成前台的消息,流程 结束。
权利要求
1、一种手机应用程序运行状态的管理方法,所述手机中包括窗口管理器模块,应用管理器模块,一个或多个应用程序在其中运行,每个应用程序分别调用一个客户端代理模块,其特征在于,所述方法包括如下步骤A、应用程序调用客户端代理模块提供的窗口操作函数向窗口管理器模块发出操作请求;B、窗口管理器模块根据所述的操作请求执行相应的操作,并根据操作结果向应用管理器模块发送状态切换消息;C、应用管理器模块依据所述状态切换消息,向客户端代理模块发送应用程序运行状态变化的消息;D、客户端代理模块将应用程序运行状态变化的消息通知给调用该客户端代理模块的应用程序。
2、 根据权利要求1所述的方法,其特征在于,所述状态切换消息中包含 改变前顶层窗口 ID及所属的应用程序ID、改变后顶层窗口 ID及所属的应用 程序ID,若改变前顶层窗口所属的应用程序ID和改变后顶层窗口所属的应 用程序ID相同,则所述状态切换消息为进程内窗口切换消息;否则,所述 状态切换消息为应用程序的前后台切换消息。
3、 根据权利要求2所述的方法,其特征在于,步骤B中具体包括如下 步骤如果操作请求中改变之前和改变之后的顶层窗口不属同一进程,则向应 用管理器模块发送应用程序的前后台切换消息;若属于同一进程,则向应用 管理器模块发送进程内切换消息。
4、 根据权利要求3所述的方法,其特征在于,所述应用管理器模块收到 的所述状态切换消息为进程内切换消息时,所述步骤C具体包括如下步骤根据所述应用程序的ID向该应用程序调用的客户端代理模块发送应用 程序运行状态变化的消息,该消息中包含改变之前和改变之后顶层窗口 ID。
5、 根据权利要求3所述的方法,其特征在于,所述应用管理器模块收到 的所述状态切换消息为应用程序的前后台切换消息时,所述步骤C具体包括 如下步骤修改所述应用管理器模块中改变前顶层窗口所属应用程序和改变后顶层 窗口所属应用程序的运行状态变量;向改变前顶层窗口所属应用程序调用的 客户端代理模块发送应用程序运行状态变化的消息,该消息中包括改变前顶 层窗口ID;以及,向改变后顶层窗口所属应用程序调用的客户端代理模块发 送应用程序运行状态变化的消息,该消息中包括改变后顶层窗口 ID。
6、 根据权利要求1至5任一所述的方法,所述运行状态包括"正在启动 中"、"前台运行"、"后台运行"、"未运行"。
7、 一种手机应用程序运行状态的管理系统,其特征在于,包括: 窗口管理器模块,用于管理应用程序创建的窗口,接收客户端代理模块发来的才喿作请求,接照该搮:作请求管理应用程序创建的窗口,并向应用管理 器模块发送状态切换消息;应用管理器模块,用于对窗口管理器模块发来的状态切换消息进行处理 并向客户端代理模块发送应用程序运行状态的消息;一个或多个客户端代理模块,用于处理应用管理器模块发来的应用程序 运行状态的消息,并通过窗口操作函数通知其对应的应用程序运行状态变化 的消息;还用于构建其对应的应用程序的运行状态操作请求,并将所述才喿作 请求传递给窗口管理器模块。
8、 根据权利要求7所述的系统,其特征在于,所述运行状态包括"正在 启动中"、"前台运行"、"后台运行"、"未运行"。
9、 根据权利要求7或8所述的系统,其特征在于,所述状态切换消息中 包含改变前顶层窗口 ID及所属的应用程序ID、改变后顶层窗口 ID及所属的 应用程序ID,若改变前顶层窗口所属的应用程序ID和改变后顶层窗口所属 的应用程序ID相同,则所述状态切换消息为进程内窗口切换消息;否则, 所述状态切换消息为应用程序的前后台切换消息。
10、 根据权利要求9所述的系统,其特征在于,窗口管理器模块还用于在操作请求中改变之前和改变之后的顶层窗口不属同 一进程时,向应用管理器模块发送应用程序的前后台切换消息;在属于同一进程时,则窗口向应用 管理器模块发送进程内切换消息;应用管理器模块还用于在收到应用程序的前后台切换消息时,修改所述 应用管理器模块中改变前顶层窗口所属应用程序和改变后顶层窗口所属应用 程序的运行状态变量,向改变前顶层窗口所属应用程序调用的客户端代理才莫 块发送应用程序运行状态变化的消息,该消息中包括改变前顶层窗口 ID,以 及,向改变后顶层窗口所属应用程序调用的客户端代理模块发送应用程序运 行状态变化的消息,该消息中包括改变后顶层窗口 ID;在收到进程内切换消 息时,根据所述应用程序的ID向该应用程序调用的客户端代理模块发送应 用程序运行状态变化的消息,该消息中包含改变"^前和改变之后顶层窗口 ID。
全文摘要
本发明提供了一种在多任务手机系统上的应用程序运行状态管理系统和方法,该系统包括窗口管理器模块,应用管理器模块,由各应用程序分别调用的客户端代理模块;在应用程序窗口状态发生变化时,应用程序调用客户端代理模块提供的窗口操作函数向窗口管理器模块发出操作请求;窗口管理器模块根据所述的操作请求,向应用管理器模块发送状态切换消息;应用管理器模块依据所述状态切换消息,向客户端代理模块发送应用程序运行状态变化的消息;客户端代理模块将应用程序运行状态变化的消息通知给调用该客户端代理模块的应用程序,以实现对应用程序窗口的管理。该系统及方法能够解决现有技术的管理方式对CPU、电量和内存不必要开销太多的技术问题。
文档编号G06F9/46GK101403981SQ20081021754
公开日2009年4月8日 申请日期2008年11月7日 优先权日2008年11月7日
发明者古幼鹏, 徐立锋, 新 杨, 巍 王, 王泽民 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1