基于输入响应优化安卓应用程序启动速度的方法及系统与流程

文档序号:20681164发布日期:2020-05-08 18:24阅读:262来源:国知局
基于输入响应优化安卓应用程序启动速度的方法及系统与流程

本发明涉及计算机系统技术领域,尤其涉及一种基于输入响应优化安卓应用程序启动速度的方法、系统及存储介质。



背景技术:

在安卓系统中,用户在主界面启动应用程序是通过一次完整的点击行为进行触发的。具体地,点击行为的判定是始于因用户触碰触摸屏而触发上报的按下事件(action_down事件消息),并在一定的时间间隔内(例如500ms)因用户不再触碰触摸屏而触发上报的抬起事件(action_up事件消息)。上述两个先后发生的事件(按下事件和抬起事件)被处理而判定为一次点击行为。在用户的日常操作中,触摸屏操作若从手指触碰屏幕(按下)到离开屏幕(抬起)计算,耗时一般在100~200ms之间。这个时间间隔可以理解为用户的点击延时。

目前各类应用程序在对安装系统优化应用启动方面的思路都集中在点击事件之后,即如何在应用启动流程中进行的优化技术方案。例如,应用程序可以在启动的过程中进行负载优化,通过多线程来加速启动流程。又例如,操作系统可以提前准备了应用程序启动之后显示所需要的最基本资源;当发现准备启动该应用程序时,在应用程序的启动过程中就以提前准备的基本显示资源进行绘制显示,让用户从视觉上觉得提前了应用程序启动完成的时间点。

然而,由于上述技术方案都集中在启动流程本身的优化,因此它们依赖于该应用程序所运行的操作系统版本。因为安卓系统的开源性而在各智能移动端上所呈现的碎片化,所以上述技术方案将随着安卓系统的版本更迭,兼容性和优化效果往往得不到保证。



技术实现要素:

本发明的目的是缓解上述技术方案的不足,提供一种基于输入响应优化安卓应用程序启动速度的方法、系统及存储介质,能够获得在多种安卓平台上加快应用程序启动速度的效果。

为了实现上述目的,本申请采用以下的技术方案。

在第一方面,本申请提出一种基于输入响应优化应用程序启动速度的方法,可以包括以下步骤:在显示主界面环境下,捕获由操作系统内核touchscreen上报的action_down事件消息,并记录当前的第一时间点;根据所述action_down事件消息,启动点击事件处理函数onclick处理对应的应用程序;监测由操作系统内核touchscreen上报的action_up事件消息;在所述第一时间点之后的第一预设时间间隔内,检测是否捕获到所述action_up事件消息,并在捕获到所述action_up事件消息后继续启动对应的所述应用程序,否则中断对应的所述应用程序。

在本申请的上述方法中,所述点击事件处理函数onclick调用应用管理服务ams-starter为所述应用程序进行启动的初始化。

在本申请的上述一个或多个方法中,所述第一预设时间间隔在100~200ms之间。

在本申请的上述一个或多个方法中,由操作系统内核touchscreen上报action_down事件消息和action_up事件消息包括以下子步骤:在inputmanagerservice服务中初始化pressedstate状态参数;监听所述action_down事件消息和所述action_up事件消息以维护所述pressedstate状态参数;返回所述pressedstate状态参数的当前值。

在本申请的上述一个或多个方法中,由inputmanagerservice服务通过创建inputreader对象收取和分发所述action_down事件消息和所述action_up事件。

在本申请的上述一个或多个方法中,在启动对应的所述应用程序时,在标准启动应用流程的activitymanagerservice服务中增加额外的检查器以在所述预设时间间隔后检测是否捕获到所述action_up事件消息。

在本申请的上述一个或多个方法中,当在所述预设时间间隔后没有捕获到所述action_up事件消息时,所述检查器判断此次启动为误触操作或者长按操作。

在本申请的上述一个或多个方法中,当在所述第一时间点的第二预设时间间隔后捕获到所述action_up事件消息时,所述检查器判断此次启动为长按操作。

在第二方面,本申请提出一种计算机系统。所述计算机系统包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序。所述处理器执行所述程序时可以实现以下步骤:在显示主界面环境下,捕获由操作系统内核touchscreen上报的action_down事件消息,并记录当前的第一时间点;根据所述action_down事件消息,启动点击事件处理函数onclick处理对应的应用程序;监测由操作系统内核touchscreen上报的action_up事件消息;在所述第一时间点之后的预设时间间隔内,检测是否捕获到所述action_up事件消息,并在捕获到所述action_up事件消息后继续启动对应的所述应用程序,否则中断对应的所述应用程序。

在本申请的上述计算机系统中,所述点击事件处理函数onclick调用应用管理服务ams-starter为所述应用程序进行启动的初始化。

在本申请的上述一个或多个计算机系统中,所述第一预设时间间隔在100~200ms之间。

在本申请的上述一个或多个计算机系统中,由操作系统内核touchscreen上报action_down事件消息和action_up事件消息包括以下子步骤:在inputmanagerservice服务中初始化pressedstate状态参数;监听所述action_down事件消息和所述action_up事件消息以维护所述pressedstate状态参数;返回所述pressedstate状态参数的当前值。

在本申请的上述一个或多个计算机系统中,由inputmanagerservice服务通过创建inputreader对象收取和分发所述action_down事件消息和所述action_up事件。

在本申请的上述一个或多个计算机系统中,在启动对应的所述应用程序时,在标准启动应用流程的activitymanagerservice服务中增加额外的检查器以在所述预设时间间隔后检测是否捕获到所述action_up事件消息。

在本申请的上述一个或多个计算机系统中,当在所述预设时间间隔后没有捕获到所述action_up事件消息时,所述检查器判断此次启动为误触操作或者长按操作。

在本申请的上述一个或多个计算机系统中,当在所述第一时间点的第二预设时间间隔后捕获到所述action_up事件消息时,所述检查器判断此次启动为长按操作。

在第三方面,本申请提出一种存储介质。其中,所述存储介质中存储有计算机程序。所述计算机程序被设置为运行时可以执行以下步骤:在显示主界面环境下,捕获由操作系统内核touchscreen上报的action_down事件消息,并记录当前的第一时间点;根据所述action_down事件消息,启动点击事件处理函数onclick处理对应的应用程序;监测由操作系统内核touchscreen上报的action_up事件消息;在所述第一时间点之后的预设时间间隔内,检测是否捕获到所述action_up事件消息,并在捕获到所述action_up事件消息后继续启动对应的所述应用程序,否则中断对应的所述应用程序。

在本申请的上述存储介质中,所述点击事件处理函数onclick调用应用管理服务ams-starter为所述应用程序进行启动的初始化。

在本申请的上述一个或多个存储介质中,所述第一预设时间间隔在100~200ms之间。

在本申请的上述一个或多个存储介质中,由操作系统内核touchscreen上报action_down事件消息和action_up事件消息包括以下子步骤:在inputmanagerservice服务中初始化pressedstate状态参数;监听所述action_down事件消息和所述action_up事件消息以维护所述pressedstate状态参数;返回所述pressedstate状态参数的当前值。

在本申请的上述一个或多个存储介质中,由inputmanagerservice服务通过创建inputreader对象收取和分发所述action_down事件消息和所述action_up事件。

在本申请的上述一个或多个存储介质中,在启动对应的所述应用程序时,在标准启动应用流程的activitymanagerservice服务中增加额外的检查器以在所述预设时间间隔后检测是否捕获到所述action_up事件消息。

在本申请的上述一个或多个存储介质中,当在所述预设时间间隔后没有捕获到所述action_up事件消息时,所述检查器判断此次启动为误触操作或者长按操作。

在本申请的上述一个或多个存储介质中,当在所述第一时间点的第二预设时间间隔后捕获到所述action_up事件消息时,所述检查器判断此次启动为长按操作。

本申请的有益效果为:通过在应用程序启动流程的源头时机点的进行优化,使得所述应用程序的启动方法能够兼容多种安卓平台,并且在这些平台上具有稳定的优化效果。

附图说明

图1所示为现有技术方案启动安卓平台上的应用程序的流程图;

图2所示为根据本申请实施例的于输入响应优化安卓应用程序启动速度的方法流程图;

图3所示为根据本申请实施例的上报action_down事件消息和action_up事件消息的子方法流程图;

图4所示为根据本申请实施例的检测action_up事件消息的子方法流程图;

图5所示为根据本申请另一实施例的检测action_up事件消息的子方法流程图;

图6所示为根据本申请实施例的于输入响应优化安卓应用程序启动速度的系统架构图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。

参照图1所示的方法流程图,在安卓系统的主界面下,当用户触碰触摸屏上的应用程序图标以启动相应的应用程序时,操作系统将抛出一个action_down事件消息。然后,当用户的手指离开触摸屏时,操作系统将相应地又抛出一个action_up事件消息。此时,用户的点击动作才被认为完成。只有在点击动作完全执行完毕的情况下(即系统先后抛出action_down事件消息和action_up事件消息),操作系统才会根据用户的触碰位置,启动相应的应用程序。因此,在等待用户将手指抬离触摸屏的期间(即图1中虚线所示的手指触碰到触摸屏和手指离开触摸屏之间的等待时间内),操作系统将不会作出任何响应。一般地,由于在用户的日常操作中,从手指触碰屏幕(按下)到离开屏幕(抬起)耗时在100~200ms之间,而且这个过程中伴随着用户的操作,因此这个时间间隔并不影响用户流畅使用。相反,当用户启动了应用程序后,由于操作系统的activitymanagerservice服务中应用管理服务ams-starter才开始执行相应的准备工作以启动所述应用程序,因此当应用程序较大,使得activitymanagerservice服务需要花费较多的时间初始化所述应用程序(例如分配内存、创建线程和导入外部资源等等)时,应用程序的流畅性就会明显地受到影响。

因此,为了充分利用在前一阶段(即等待系统抛出action_up事件消息的阶段)中系统的空闲时间,参考图1,在本申请的实施例中,基于输入响应优化安卓应用程序启动速度的方法可以包括以下步骤:

在显示主界面环境下,捕获由操作系统内核touchscreen上报的action_down事件消息,并记录当前的第一时间点;

根据所述action_down事件消息,启动点击事件处理函数onclick处理对应的应用程序;

监测由操作系统内核touchscreen上报的action_up事件消息;

在所述第一时间点之后的第一预设时间间隔内,检测是否捕获到所述action_up事件消息,并在捕获到所述action_up事件消息后继续启动对应的所述应用程序,否则中断对应的所述应用程序。

由于在用户触碰的触摸屏的瞬间,操作系统内核touchscreen上报的action_down事件消息就被捕获,从而启动点击事件处理函数onclick处理对应的应用程序,因此上述等待时间被充分利用(见图2中所示的等待时间,并对比图1中相应所示的等待时间部分),使得应用程序的启动时机被提前。一般地,所述点击事件处理函数onclick可以按照标准启动应用流程startactivity,调用应用管理服务ams-starter为所述应用程序进行启动的初始化。经发明人在a50android-p上测试,对比验证启动时间提升约在7%左右。此外,由于上述启动过程的优化是在启动应用程序的源头时机,因此该优化对常见的分支版本安卓系统和原生安卓系统均有效,具有较好的兼容性。

参照图3所示的子方法流程图,在本申请的上述一个或多个实施例中,捕获由操作系统内核touchscreen上报action_down事件消息和action_up事件消息可以通过以下方式实现:

在inputmanagerservice服务中初始化pressedstate状态参数;

监听所述action_down事件消息和所述action_up事件消息以维护所述pressedstate状态参数;

返回所述pressedstate状态参数的当前值。

返回所述pressedstate状态参数的功能可以封装为一个服务检测接口,并提供给各个应用程序,使得所有应用程序能够通过服务检测接口以统一且规范的方式捕获action_down事件消息和action_up事件消息。其中,操作系统的内核touchscreen驱动负责上报所述action_down事件消息和所action_up事件消息,并由inputmanagerservice(ims)负责收取并分发,将其对应到当前活跃主界面的具体图标所对应的应用程序。类似地,操作系统可以在分发消费点击事件时识别主界面上的图标所对应的应用程序,使得当所述action_down事件消息发起应用程序时,检查标志mark被设置到activitymanagerservice服务中,由被点击的应用程序消费action_up事件消息,并且与activitymanagerservice服务共同维护所述检查标志mark。本申请的一个或多个实施例可以通过判断在主界面上的应用程序按钮图标消费action_up事件消息以及主动获取pressedstate状态参数以兼容长按操作以及误触,保证启动的安全性。例如,在本申请的上述一个或多个实例中,在启动对应的所述应用程序时,在标准启动应用流程的activitymanagerservice服务中增加额外的检查器以在所述预设时间间隔后检测是否捕获到所述action_up事件消息。

具体地,由于在用户的日常操作中,从手指触碰屏幕(按下)到离开屏幕(抬起)耗时一般在100~200ms之间,因此在本申请的上述一个或多个实施例中,所述第一预设时间间隔相应地设置在100~200ms之间,以区分用户的正常点击操作、误操作和长按操作。参照图4所示的方法流程图,在本申请的一个或多个实施例中,当在所述预设时间间隔后没有捕获到所述action_up事件消息时,所述检查器判断此次启动为误触操作或者长按操作。进一步地,参照图5所示的方法流程图,在本申请的上述一个或多个实施例中,当在所述第一时间点的第二预设时间间隔后捕获到所述action_up事件消息时,所述检查器判断此次启动为长按操作。其中,所述第二预设时间间隔可以是500ms,对应于目前的日常操作中,当用户在主界面下长按某个应用程序的图标超过500ms时,用户的操作被判断为对上述应用常驻执行长按功能。需要注意的是,图5和图4所示的流程图在开始时执的监测所述action_up事件消息是在所述第一时间点的第一预设时间间隔后。

图6是本发明实施例提供的基于输入响应优化安卓应用程序启动速度的系统示意图。如图6所示,该实施例的基于输入响应优化安卓应用程序启动速度的系统包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如启动程序。所述处理器执行所述计算机程序时实现上述各个视频流播放方法实施例中的步骤,例如图2所示的步骤。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于输入响应优化安卓应用程序启动速度的系统中的执行过程。

所述基于输入响应优化安卓应用程序启动速度的系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述视频流播放设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图6仅仅是基于输入响应优化安卓应用程序启动速度的设备的示例,并不构成对基于输入响应优化安卓应用程序启动速度的设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于输入响应优化安卓应用程序启动速度的系统还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1