专利名称:一种事件处理方法及设备
专利类型:实用新型专利
专利申请号:CN202011065797.5
专利申请(专利权)人:华为技术有限公司
权利人地址:广东省深圳市龙岗区坂田华为总部办公楼
专利发明(设计)人:王敏
专利摘要:本申请实施例提供一种事件处理方法及设备,涉及终端技术领域,能够在电子设备确定接收到的目标输入事件满足预设条件时,提前处理收集的目标输入事件,无需等待下一个目标垂直同步信号到来之后再处理收集的目标输入事件。具体方案为:在电子设备接收到第一目标垂直同步信号之后,若电子设备接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,处理该目标输入事件。其中,第二目标垂直同步信号是第一目标垂直同步信号的下一个目标垂直同步信号。本申请实施例用于事件处理的过程。
主权利要求:
1.一种事件处理方法,应用于电子设备,其特征在于,所述方法包括:在接收到第一目标垂直同步信号之后,若接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,处理所述目标输入事件;所述预设条件包括:所述目标输入事件对应的第一时间段小于输入事件的最小上报周期;
其中,所述第二目标垂直同步信号是所述第一目标垂直同步信号的下一个目标垂直同步信号。
2.根据权利要求1所述的方法,其特征在于,所述第一时间段表示,接收到所述目标输入事件的时刻与所述第二目标垂直同步信号到来的时刻之间的时间段。
3.根据权利要求1或2所述的方法,其特征在于,所述处理所述目标输入事件,包括:绘制所述目标输入事件对应的一个或多个图层。
4.根据权利要求3所述的方法,其特征在于,所述处理目标输入事件,还包括:处理第二时间段内接收到的其他目标输入事件;
其中,所述第二时间段表示,接收到所述第一目标垂直同步信号的时刻与接收到所述目标输入事件的时刻之间的时间段。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若接收到的输入事件是目标输入事件,且不满足所述预设条件,则接收下一个输入事件。
6.根据权利要求5所述的方法,其特征在于,所述目标输入事件为滑动动作事件。
7.一种电子设备,其特征在于,所述电子设备包括触摸屏、存储器和一个或多个处理器;所述触摸屏、所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,使得所述电子设备执行:在接收到第一目标垂直同步信号之后,若接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,处理所述目标输入事件;所述预设条件包括:所述目标输入事件对应的第一时间段小于输入事件的最小上报周期;
其中,所述第二目标垂直同步信号是所述第一目标垂直同步信号的下一个目标垂直同步信号。
8.根据权利要求7所述的电子设备,其特征在于,所述第一时间段表示,接收到所述目标输入事件的时刻与所述第二目标垂直同步信号到来的时刻之间的时间段。
9.根据权利要求7或8所述的电子设备,其特征在于,所述处理所述目标输入事件,包括:绘制所述目标输入事件对应的一个或多个图层。
10.根据权利要求9所述的电子设备,其特征在于,所述处理目标输入事件,还包括:处理第二时间段内接收到的其他目标输入事件;
其中,所述第二时间段表示,接收到所述第一目标垂直同步信号的时刻与接收到所述目标输入事件的时刻之间的时间段。
11.根据权利要求10所述的电子设备,其特征在于,所述电子设备还执行:若接收到的输入事件是目标输入事件,且不满足所述预设条件,则接收下一个输入事件。
12.根据权利要求11所述的电子设备,其特征在于,所述目标输入事件为滑动动作事件。
13.一种芯片系统,其特征在于,所述芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1‑6中任一项所述的方法。
14.一种计算机存储介质,包括计算机指令,其特征在于,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1‑6中任一项所述的方法。
15.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1‑6中任一项所述的方法。 说明书 : 一种事件处理方法及设备技术领域[0001] 本申请实施例涉及终端技术领域,尤其涉及一种事件处理方法及设备。背景技术[0002] 通常,电子设备通过绘制、渲染、图像帧合成和图像帧显示等处理过程,在电子设备的屏幕上显示画面。现有技术中,如图1A所示,绘制处理可以被划分为4个步骤,包括:输入input处理1,动画animation处理2,遍历traversal处理3和回调callback处理4。[0003] 在安卓Android系统中,触屏交互过程中的输入事件可以包括:触屏动作ACTION_DOWN事件、滑动动作ACTION_MOVE事件和抬手动作ACTION_UP事件等。其中,若电子设备确定接收到的输入事件是ACTION_MOVE事件,则将该输入事件缓存起来,直到下一个目标垂直同步信号(如VSYNC_APP)到来时,才绘制缓存起来的输入事件对应的一个或多个图层(即依次进行input处理、animation处理、traversal处理、callback处理),之后对这一个或多个图层进行渲染、图像帧合成和图像帧显示等处理。[0004] 通过现有技术的方案来处理ACTION_MOVE事件时,必须等待垂直同步信号1到来,这可能造成处理ACTION_MOVE事件时(即开始绘制ACTION_MOVE事件对应的一个或多个图层时)存在时延,滑屏交互的响应时间较长。发明内容[0005] 本申请实施例提供一种事件处理方法及设备,电子设备可以提前处理目标输入事件,而不需要等待下一个目标垂直同步信号到来之后再处理目标输入事件,从而减少电子设备处理目标输入事件的时延,减少滑屏交互的响应时间。[0006] 为达到上述目的,本申请实施例采用如下技术方案:[0007] 第一方面,本申请实施例提供了一种事件处理方法,应用于电子设备。该方法可以包括:在接收到第一目标垂直同步信号之后,若电子设备接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,电子设备处理该目标输入事件。其中,第二目标垂直同步信号是第一目标垂直同步信号的下一个目标垂直同步信号。[0008] 本申请的方法中,电子设备可以在接收到的目标输入事件满足预设条件的情况下,在第二目标垂直同步信号到来之前,处理该目标输入事件。这样,电子设备可以提前处理收集的目标输入事件,无需等待第二目标垂直同步信号到来之后再处理收集的目标输入事件,从而能够减少电子设备的时延,减少滑屏交互的响应时间,保证滑动跟手性。[0009] 结合第一方面,在一种可能的设计方式中,上述预设条件包括:目标输入事件对应的第一时间段小于输入事件的最小上报周期。其中,第一时间段表示,接收到该目标输入事件的时刻与第二目标垂直同步信号到来的时刻之间的时间段。[0010] 也就是说,电子设备接收到目标输入事件满足预设条件指的是,电子设备接收到该目标输入事件的时刻与第二目标垂直同步信号到来的时刻之间的时间差小于输入事件的最小上报周期。这样,在第二目标垂直同步信号到来之前,电子设备不会再接收到目标输入事件,因此,可以保证在第二目标垂直同步信号到来之后需要处理的目标输入事件已经收集完成,电子设备可以提前处理该目标输入事件。[0011] 结合第一方面,在另一种可能的设计方式中,处理目标输入事件包括:绘制目标输入事件对应的一个或多个图层。[0012] 结合第一方面,在另一种可能的设计方式中,处理目标输入事件还包括:处理第二事件段内接收到的其他目标输入事件。其中,第二时间段表示,接收到第一目标垂直同步信号的时刻与接收到目标输入事件的时刻之间的时间段。也就是说,在满足预设条件时,电子设备除了处理该目标输入事件之外,也处理在接收到第一目标垂直同步信号之后且在接收到该目标输入事件之前接收到的其他目标输入事件。[0013] 结合第一方面,在另一种可能的设计方式中,处理目标输入事件不包括:计算目标输入事件对应的第一时间段。[0014] 结合第一方面,在另一种可能的设计方式中,该方法还包括:若电子设备接收到的输入事件是目标输入事件,且不满足预设条件,则接收下一个输入事件。[0015] 结合第一方面,在另一种可能的设计方式中,目标输入事件可以是滑动动作事件。[0016] 第二方面,本申请提供一种电子设备,该电子设备包括触摸屏、存储器和一个或多个处理器;触摸屏、存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行所述计算机指令时,使得电子设备执行:在接收到第一目标垂直同步信号之后,若接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,处理目标输入事件;其中,第二目标垂直同步信号是第一目标垂直同步信号的下一个目标垂直同步信号。[0017] 结合第二方面,在一种可能的设计方式中,预设条件包括:目标输入事件对应的第一时间段小于输入事件的最小上报周期;其中,第一时间段表示,接收到目标输入事件的时刻与第二目标垂直同步信号的时刻之间的时间段。[0018] 结合第二方面,在另一种可能的设计方式中,处理目标输入事件,包括:绘制目标输入事件对应的一个或多个图层。[0019] 结合第二方面,在另一种可能的设计方式中,处理目标输入事件,还包括:处理第二时间段内接收到的其他目标输入事件;其中,第二时间段表示,第一目标垂直同步信号的时刻与接收到目标输入事件的时刻之间的时间段。[0020] 结合第二方面,在另一种可能的设计方式中,所述电子设备还执行:若电子设备接收到的输入事件是目标输入事件,且不满足所述预设条件,则接收下一个输入事件[0021] 结合第二方面,在另一种可能的设计方式中,目标输入事件为滑动动作事件。[0022] 第三方面,本申请提供一种芯片系统,该芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如第一方面及其任一种可能的设计方式所述的方法。[0023] 第四方面,本申请提供一种计算机存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面及其任一种可能的设计方式所述的方法。[0024] 第五方面,本申请提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。[0025] 可以理解地,上述提供的第二方面所述的电子设备,第三方面所述的芯片系统,第四方面所述的计算机存储介质,第五方面所述的计算机程序产品所能达到的有益效果,可参考第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。附图说明[0026] 图1A为提供的图像处理过程的示意图;[0027] 图1B为提供的电子设备的软件处理流程的示意图;[0028] 图1C为垂直同步信号的信号周期相同的示意图;[0029] 图2为本申请实施例提供的电子设备的硬件结构示意图;[0030] 图3为本申请实施例提供的电子设备的软件结构示意图;[0031] 图4为本申请实施例提供的事件处理方法的一种流程示意图;[0032] 图5为本申请实施例提供的触屏交互的一种界面示意图;[0033] 图6为本申请实施例提供的事件处理方法的示意图;[0034] 图7为本申请实施例提供的事件处理方法的另一种流程示意图;[0035] 图8为本申请实施例提供的事件处理方法的另一种流程示意图;[0036] 图9为本申请实施例提供的电子设备的结构示意图。具体实施方式[0037] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。[0038] 以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。[0039] 本申请实施例提供了一种事件处理方法,可以应用于电子设备,能够在接收到的输入input事件是目标输入事件,例如滑动动作ACTION_MOVE事件时,根据输入事件的最小上报周期以及屏幕刷新周期,来确定是否可以提前处理目标输入事件,即是否可以立即绘制目标输入事件对应的一个或多个图层。若可以提前处理目标输入事件,则电子设备立即处理该目标输入事件,无需等待接收到垂直同步信号1之后再处理该目标输入事件。从而可以减少电子设备的响应时延,减少滑屏交互的响应时间;而不会出现现有技术中等待接收到垂直同步信号1之后才处理目标输入事件所造成的时延较长,滑屏交互的响应时间较长,影响滑动跟手性的问题。[0040] 参考图1B,电子设备可以包括:触控面板(touchpanel,TP)/TP驱动(Driver)、Input框架(即InputFramework)、UI框架(即UIFramework)、Display框架(即DisplayFramework)和硬件显示模块。[0041] 其中,TPIC/TP驱动中的TP采集用户对电子设备的TP的触摸操作后,TP驱动上报相应的触控事件;Input框架的InputReader线程可以读取触控事件,然后向InputDispatcher线程发送该触控事件;由InputDispatcher线程向UI框架中的UI线程(如DoFrame)发送上传该触控事件;UI框架中的UI线程绘制该触控事件对应的一个或多个图层;渲染线程对一个或多个图层进行图层渲染;Display框架中的合成线程对渲染后的一个或多个图层进行图层合成,得到图像帧;硬件显示模块的液晶显示面板(LiquidCrystalDisplay,LCD)驱动可接收合成的图像帧,由LCD显示合成的图像帧。LCD显示图像帧后,LCD显示的图像可被人眼感知。[0042] 结合图1A,对电子设备响应于用户在触摸屏的触摸操作,在触摸屏显示图像的过程中,出现的垂直同步信号进行介绍。[0043] 垂直同步信号1(如VSYNC_APP)可以用于触发绘制一个或多个图层。在本申请实施例中,垂直同步信号1可以用于触发绘制一个或多个图层具体指的是,垂直同步信号1可以触发绘制一个或多个图层,并触发对这一个或多个图层进行渲染。也就是说,绘制的一个或多个图层指的是渲染后的一个或多个图层。需要注意的是,若在垂直同步信号1的一个信号周期内,上述绘制一个或多个图层未完成,即绘制超时,则在下一个垂直同步信号1到来时,电子设备依旧进行上述未完成的绘制过程。如图1A所示,在这种情况下,由于绘制超时,因此可能出现掉帧现象。[0044] 垂直同步信号2(如VSYNC_SF)可以用于触发对绘制的一个或多个图层进行图层合成得到图像帧。在电子设备响应于垂直同步信号1完成绘制一个或多个图层之后,电子设备可以响应垂直同步信号2对这一个或多个图层(渲染后的一个或多个图层)进行图层合成。[0045] 垂直同步信号3(如HW_VSYNC)可以用于触发硬件刷新显示图像帧。在电子设备响应于垂直同步信号2完成图像帧合成之后,电子设备可以响应于垂直同步信号3进行图像帧显示。[0046] 结合图1A和图1B,响应于用户的触摸操作,或者电子设备发生UI事件,UI框架可以在垂直同步信号1到来的时刻,调用UI线程绘制触控事件(即输入事件)对应的一个或多个图层,再调用渲染线程以对该一个或多个图层进行渲染。然后,Display框架中的合成线程可以在垂直同步信号2到来的时刻,调用合成线程对绘制的一个或多个图层(即渲染后的一个或多个图层)进行图层合成得到图像帧;最后,硬件显示模块可以在垂直同步信号3到来的时刻,在LCD(即显示屏,此处以LCD为例)刷新显示上述图像帧。其中,上述UI事件可以是由用户对TP的触摸操作触发的。或者,该UI事件可以是由电子设备自动触发的。例如,电子设备的前台应用自动切换画面时,可以触发上述UI事件。前台应用是电子设备的显示屏当前显示的界面对应的应用。[0047] 需要说明的是,UI框架基于垂直同步信号1周期性地进行图层绘制和渲染;Display框架基于垂直同步信号2周期性地进行图层合成;硬件显示模块基于垂直同步信号3周期性地进行图像帧显示刷新。[0048] 其中,垂直同步信号3是由电子设备地显示屏驱动触发的硬件信号,该垂直同步信号3的信号周期T3是根据电子设备的显示屏的屏幕刷新频率确定的。即,垂直同步信号3的信号周期T3等于电子设备的显示屏的屏幕刷新周期。具体的,垂直同步信号3的信号周期T3是电子设备的显示屏的屏幕刷新频率的倒数。[0049] 例如,电子设备的显示屏的屏幕刷新频率可以为60赫兹(Hz)、70Hz、75Hz或者80Hz等任一值。以屏幕刷新率是60Hz为例,上述垂直同步信号3的信号周期T3=1/60=0.01667秒(s)=16.667毫秒(ms)。需要注意的是,其中,电子设备可能支持多个不同的屏幕刷新频率。例如,假设电子设备支持的最大屏幕刷新频率为80Hz。那么,该电子设备则可能支持屏幕刷新频率80Hz、60Hz或者40Hz等。本申请实施例中所述的屏幕刷新频率是电子设备当前所使用的屏幕刷新频率。即垂直同步信号3的信号周期T3是电子设备当前所使用的屏幕刷新率的倒数。[0050] 而垂直同步信号1和垂直同步信号2是基于垂直同步信号3产生的。通常,垂直同步信号1和垂直同步信号2与垂直同步信号3同步。也就是说,垂直同步信号1和垂直同步信号2与垂直同步信号3的信号周期相同,且相位一致。可以理解的是,实际实施过程中,垂直同步信号1、垂直同步信号2,以及垂直同步信号3之间可能会因为各种因素(如处理性能)存在一定的相位误差。需要注意的是,在理解本申请实施例的方法时,上述相位误差被忽略。[0051] 本申请实施例中,如图1C所示,上述垂直同步信号1、垂直同步信号2和垂直同步信号3都是周期性离散信号,垂直同步信号1、垂直同步信号2和垂直同步信号3的信号周期都可以称为同步周期TZ。即T1=T2=T3=TZ。其中,图1A所示的Frame1、Frame2、Frame3和Frame4均为上述同步周期。[0052] 其中,TP是触控面板,TP可以集成在显示屏中。TP可以周期性检测用户的触摸操作。TP检测到触摸操作后,可以唤醒上述垂直同步信号1和垂直同步信号2,以触发UI框架基于垂直同步信号1进行图层绘制和渲染,Display框架基于垂直同步信号2进行图层合成。可以将TP周期性检测用户的触摸操作的周期称为输入事件的上报周期,在本申请实施例中,输入事件的最小上报周期指的是输入事件的上报周期的最小值。示例性的,输入事件的最小上报周期通常是一个小于TZ的固定值。[0053] 本申请实施例提供的事件处理方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,AR)/虚拟现实(virtualreality,VR)设备、笔记本电脑、超级移动个人计算机(ultra‑mobilepersonalcomputer,UMPC)、上网本、个人数字助理(personaldigitalassistant,PDA)等电子设备上,本申请实施例对电子设备的具体类型不作任何限制。[0054] 示例性的,图2示出了电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。[0055] 可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。[0056] 处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,AP),调制解调处理器,图形处理器(graphicsprocessingunit,GPU),图像信号处理器(imagesignalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,DSP),基带处理器,和/或神经网络处理器(neural‑networkprocessingunit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。[0057] 其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。[0058] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。在一些实施例中,当接收到的目标输入事件不满足提前处理的条件时,电子设备100可以将接收到的目标输入事件缓存在存储器中,等到垂直同步VSYNC信号到来时或者满足预设条件时,再处理缓存的目标输入事件。[0059] 在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter‑integratedcircuit,I2C)接口,集成电路内置音频(inter‑integratedcircuitsound,I2S)接口,脉冲编码调制(pulsecodemodulation,PCM)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,UART)接口,移动产业处理器接口(mobileindustryprocessorinterface,MIPI),通用输入输出(general‑purposeinput/output,GPIO)接口,用户标识模块(subscriberidentitymodule,SIM)接口,和/或通用串行总线(universalserialbus,USB)接口等。[0060] 可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。[0061] 电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。[0062] 天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。[0063] 移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。[0064] 无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocalareanetworks,WLAN)(如无线保真(wirelessfidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigationsatellitesystem,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(nearfieldcommunication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。[0065] 在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(globalsystemformobilecommunications,GSM),通用分组无线服务(generalpacketradioservice,GPRS),码分多址接入(codedivisionmultipleaccess,CDMA),宽带码分多址(widebandcodedivisionmultipleaccess,WCDMA),时分码分多址(time‑divisioncodedivisionmultipleaccess,TD‑SCDMA),长期演进(longtermevolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(globalpositioningsystem,GPS),全球导航卫星系统(globalnavigationsatellitesystem,GLONASS),北斗卫星导航系统(beidounavigationsatellitesystem,BDS),准天顶卫星系统(quasi‑zenithsatellitesystem,QZSS)和/或星基增强系统(satellitebasedaugmentationsystems,SBAS)。[0066] 电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。[0067] 显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,LCD),有机发光二极管(organiclight‑emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrixorganiclightemittingdiode的,AMOLED),柔性发光二极管(flexlight‑emittingdiode,FLED),Miniled,MicroLed,Micro‑oLed,量子点发光二极管(quantumdotlightemittingdiodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。[0068] 电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。[0069] ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。[0070] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。[0071] 视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(movingpictureexpertsgroup,MPEG)1,MPEG2,MPEG3,MPEG4等。[0072] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。[0073] 外部存储器接口120可以用于连接外部存储卡,例如MicroSD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。[0074] 内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,UFS)等。[0075] 电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。[0076] 压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。[0077] 指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。[0078] 触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸操作对应的输入事件的类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。[0079] 在本申请实施例中,触摸传感器180K可以检测到作用于显示屏上或附近的触摸操作,例如,触屏动作ACTION_DOWN、滑动动作ACTION_MOVE或抬手动作ACTION_UP等。触摸传感器180K可以将检测到的触摸操作传递给应用处理器,若触摸操作对应的输入事件是目标输入事件,例如ACTION_MOVE事件,则电子设备可以在确定该目标输入事件满足预设条件时,立即处理收集的目标输入事件并通过显示屏194提供相关的视觉输出,而不需等到接收到垂直同步信号1后再处理目标输入事件,从而减少响应时延,保证滑动跟手性。[0080] 图3是本申请实施例的电子设备100的软件结构框图。需要说明的是,图3仅示出运行在虚拟机中的应用程序层和应用程序框架层的架构。电子设备100还可以包括安卓运行时(Androidruntime)和系统库,以及内核层等,本申请对此不作限定。其中,每一层都有清晰的角色和分工,层与层之间通过软件接口通信。[0081] 其中,应用程序层可以包括一系列应用程序包。例如,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。应用程序层还可以处理多种输入事件,例如ACTION_DOWN事件、ACTION_MOVE事件或ACTION_UP事件等。[0082] 应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramminginterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。[0083] 如图3所示,应用程序框架层可以包括Framwork模块、iAware模块和核心服务模块等。[0084] 其中,iAware模块可以包括开关配置模块和帧时间同步模块。iAware模块用于配置输入事件的最小上报周期T_input和屏幕刷新周期TZ。例如,电子设备100可以通过开启iAware模块中的开关配置模块来静态配置输入事件的最小上报周期T_input。再例如,iAware模块中的帧时间同步模块可以获取屏幕刷新周期TZ,即垂直同步信号1的周期。帧时间同步模块还可以根据屏幕刷新周期计算出下一个垂直同步信号1的时间t_vsync。[0085] Framwork模块可以包括Choreographer模块和InputEventReceiver模块。Framwork模块用于判断输入事件的类型,并且在确定输入事件为目标输入事件,例如ACTION_MOVE事件后,判断目标输入事件是否能够提前处理,即判断是否能够立即绘制目标输入事件对应的一个或多个图层,而不需要等待下一个垂直同步信号1到来之后再处理目标输入事件。[0086] 示例性的,Framwork模块中的InputEventReceiver模块可以从iAware模块获取到输入事件的最小上报周期;Framwork模块中Choreographer模块可以从帧时间同步模块获取屏幕刷新周期和下一个垂直同步信号1的时间,并将屏幕刷新周期和下一个垂直同步信号1的时间也发送至InputEventReceiver模块。[0087] 若InputEventReceiver模块确定当前输入事件是目标输入事件,例如ACTION_MOVE事件,则InputEventReceiver模块可以根据输入事件的最小上报周期、下一个垂直同步信号1的时间和目标输入事件的时间戳t_input来判断是否提前处理该目标输入事件,即是否立即绘制目标输入事件对应的一个或多个图层。可以理解的是,目标输入事件的时间戳表示该目标输入事件的输入时刻。[0088] 核心服务模块可以包括inputflinger模块和surfaceflinger模块。核心服务模块包括电子设备100的内部服务程序。其中,inputflinger模块用于接收各种输入操作,例如,inputflinger模块可以接收各类触屏操作(用户的触摸操作或通过触控设备进行的触屏操作),进而接收对应的输入事件。surfaceflinger模块用于提供相应的视觉输出。例如,surfaceflinger模块可以基于输入事件,通过显示屏提供相关的视觉输出。[0089] 在本申请实施例中,参见图3,应用程序框架层的InputEventReceiver模块确定可以提前处理目标输入事件后,将确定结果发送至应用程序层,由应用程序层调用CPU或GPU等来对该目标输入事件进行处理。例如,绘制目标输入事件对应的一个或多个图层,然后对这一个或多个图层进行图层合成,最后进行图像帧显示。[0090] 为了便于理解,本申请以下实施例将以电子设备为具有图2和图3所示结构的手机为例,结合附图4对本申请实施例提供的事件处理方法进行具体阐述。如图4所示,该事件处理方法包括:[0091] S401、手机接收输入事件。[0092] 在用户与手机进行触屏交互时,手机可以接收到用户通过手指或触控笔等触控物体输入的多种触屏操作,例如滑动动作ACTION_MOVE、触屏动作ACTION_DOWN或抬手动作ACTION_UP等。在一些实施例中,一次完整的触屏交互可以包括:一个ACTION_DOWN、多个ACTION_MOVE和一个ACTION_UP。[0093] 根据不同的触屏操作,手机可以接收到不同的输入事件。例如,输入事件可以包括:ACTION_MOVE事件、ACTION_DOWN事件或ACTION_UP事件等。[0094] 示例性的,如图5所示,用户通过与手机进行触屏交互,使得手机显示下拉通知栏。其中,在位置1处,用户的触屏操作是ACTION_DOWN,对应的,手机可以接收到ACTION_DOWN事件;在下拉过程中,比如位置2和位置3处,用户的触屏操作是ACTION_MOVE,对应的,手机可以接收到ACTION_MOVE事件;在位置4处,用户的触屏操作是ACTION_UP,对应的,手机可以接收到ACTION_UP事件。通过用户与手机的触屏交互,手机显示出下拉通知栏。[0095] S402、手机判断接收到的输入事件是否为目标输入事件。[0096] 手机接收到输入事件之后,可以对该输入事件的类型进行判断,判断接收到的输入事件是否为目标输入事件。[0097] 其中,目标输入事件表示在现有技术中,需要等待下一个垂直同步信号1到来之后,才能处理的输入事件。例如,目标输入事件可以是ACTION_MOVE事件。[0098] 若手机确定接收到的输入事件是目标输入事件,则可以确定该目标输入事件是否满足预设条件。若满足预设条件,则手机可以提前处理目标输入事件。也就是说,手机可以在下一个垂直同步信号1到来之前就处理目标输入事件,例如,在下一个垂直同步信号1到来之前就绘制目标输入事件对应的一个或多个图层,无需等待下一个垂直同步信号1到来之后处理目标输入事件。若不满足预设条件,则手机可以保存当前的目标输入事件,并继续接收下一个输入事件。[0099] 在一些实施例中,预设条件包括目标输入事件的时间戳与下一个垂直同步信号1到来的的时刻之间的时间差小于输入事件的最小上报周期。也就是说,手机可以通过目标输入事件的时间戳、下一个垂直同步信号1到来的时刻以及输入事件的最小上报周期,来确定目标输入事件是否满足预设条件。[0100] 在一种可能的实现方式中,手机确定目标输入事件是否满足预设条件可以包括以下步骤:[0101] S403、若手机确定接收到的输入事件是目标输入事件,则手机计算下一个垂直同步信号1到来的时刻。[0102] 若手机确定接收到的输入事件不是目标输入事件,则手机继续接收下一个输入事件。[0103] 其中,下一个垂直同步信号1的事件即手机接收到下一个垂直同步信号1的时刻。手机可以根据屏幕刷新周期计算下一个垂直同步信号1到来的时刻。具体的,下一个垂直同步信号1到来的时刻等于当前垂直同步信号1到来的时刻加上屏幕刷新周期TZ。[0104] 示例性地,如图6所示,若当前垂直同步信号1到来的时刻为t0,则下一个垂直同步信号1到来的的时刻t_vsync=t0+TZ。[0105] 其中,屏幕刷新周期TZ表示,屏幕显示的画面的切换显示时间。例如,若屏幕刷新周期为16.6ms,即屏幕刷新频率为60Hz,则表示一秒钟切换显示60张画面;若屏幕刷新周期为8.33ms,即屏幕刷新周期为120Hz,则表示一秒钟切换显示120张画面。本申请实施例对屏幕刷新周期的时长不作限定。[0106] 也可以认为,屏幕刷新周期是VSYNC信号的刷新周期,即两个VSYNC信号之间的时间差。[0107] 屏幕刷新周期可以是提前设置于手机中的,也可以是用户根据需求在手机中设置的。本申请实施例对屏幕刷新周期的设置时机和设置方式不作限定。[0108] 在一些实施例中,手机可以在确定接收到的输入事件是目标输入事件之后,获取屏幕刷新周期TZ。在另一些实施例中,手机也可以在步骤S402之前,获取屏幕刷新周期TZ。本申请实施例对手机获取屏幕刷新周期TZ的时机不作限定,只要在计算下一个垂直同步信号1到来的的时刻之前获取到屏幕刷新周期TZ即可。[0109] S404、手机根据该目标输入事件的时间戳和下一个垂直同步信号1到来的时刻,计算时间差。[0110] 其中,输入事件的时间戳t_input表示,手机接收到该输入事件的时刻。若输入事件是目标输入事件,则目标输入事件的时间戳表示手机接收到该目标输入事件的时刻。[0111] 在一些实施例中,在步骤S401中,手机接收到输入事件时,即可获取该输入事件的时间戳。之后,若确定该输入事件是目标输入事件,则手机获取的输入事件的时间戳即为目标输入事件的时间戳。在另一些实施例中,手机可以在确定输入事件是目标输入事件之后,再获取该目标输入事件的时间戳。需要说明的是,本申请实施例对手机获取目标输入事件的时间戳的时机不作限定,只要手机在步骤S404之前获取到目标输入事件的时间戳即可。[0112] 示例性地,如图6所示,目标输入事件1(input1)的输入时刻是t1,则目标输入事件1的时间戳是t1;目标输入事件2(input2)的输入时刻是t2,则目标输入事件2的时间戳是t2。[0113] 在本申请实施例中,时间差表示下一个垂直同步信号1到来的时刻与目标输入事件的时间戳之间的差值。[0114] 继续如图6所示,若目标输入事件是目标输入事件1,则该目标输入事件的时间戳为t1,对应的时间差t_diff1=t_vsync‑t1;若目标输入事件是目标输入事件2,则该目标输入事件的时间戳为t2,对应的时间差t_diff2=t_vsync‑t2。[0115] S405、手机判断时间差是否小于输入事件的最小上报周期。[0116] 其中,输入事件的最小上报周期T_input表示,手机接收到用户的触摸操作之后,周期性地采集并检测触摸操作(即对应的输入事件)的最小周期。如图6所示,t1和t2之间间隔一个输入事件的最小上报周期。本申请实施例对输入事件的最小上报周期的时长不作限定,通常,输入事件的最小上报周期小于屏幕刷新周期TZ。[0117] 可选地,输入事件的最小上报周期可以是在提前配置于手机中的,也可以是用户根据需求在手机中设置的。本申请对输入事件的最小上报周期的设置时机和设置方式不作限定。[0118] 在一些实施例中,手机可以在接收输入事件时,获取输入事件的最小上报周期;在另一些实施例中,手机也可以在确定接收到的输入事件是目标输入事件之后,获取输入事件的最小上报周期。本申请实施例对获取输入事件的最小上报周期的时机不作限定,只要在步骤S405之前获取到输入事件的最小上报周期即可。[0119] 手机计算得到时间差后,可以判断时间差与输入事件的最小上报周期之间的大小关系,从而判断时间差是否小于输入事件的最小上报周期。也就是说,手机判断当前的输入事件是否满足预设条件。[0120] S406、若时间差小于输入事件的最小上报周期,则手机确定满足预设条件,手机立即处理收集的目标输入事件。[0121] 在本申请实施例中,手机提前处理收集的目标输入事件表示,手机可以立即处理收集的目标输入事件,即在下一个垂直同步信号1到来之前处理收集的目标输入事件,而无需在下一个垂直同步信号1到来之后再处理收集的目标输入事件。处理收集的目标输入事件指的是,绘制这些目标输入事件对应的一个或多个图层。[0122] 若时间差不小于输入事件的最小上报周期,则手机继续接收下一个输入事件。[0123] 在本申请实施例的一些实施例中,若时间差不小于输入事件的最小上报周期,则手机在下一个垂直同步信号1到来之前,还可能接收到下一个目标输入事件。由于手机在下一个垂直同步信号1到来之前还可能接收到目标输入事件,因此,手机不能确定下一个垂直同步信号1到来之后需要处理的目标输入事件均已收集完成。这样,手机不会提前处理收集的目标输入事件,而继续接收下一个输入事件,即执行步骤S401,直到接收到的输入事件是目标输入事件,并且目标输入事件满足预设条件为止。也就是说,直到该目标输入事件的时间戳与下一个垂直同步信号1的时间的时间差小于输入事件的最小上报周期为止。[0124] 示例性地,如图6所示,目标输入事件1对应的时间差t_diff1=t_vsync‑t1,t_diff1>T_input,这表示,在下一个垂直同步信号1到来之前,手机还有可能接收到下一个输入事件,下一个输入事件有可能是目标输入事件。由于手机在下一个垂直同步信号1到来之前还可能接收到目标输入事件,因此,手机不能确定下一个垂直同步信号1到来之后需要处理的目标输入事件均已收集完成。这种情况下,手机不会提前处理收集的目标输入事件,例如目标输入事件1,而是继续接收下一个输入事件,直到接收到的下一个输入事件是目标输入事件,并满足预设条件时,即该目标输入事件的时间戳与下一个垂直同步信号1之间的时间差小于输入事件的最小上报周期时,手机才处理收集的目标输入事件。[0125] 在本申请的另一些实施例中,若时间差小于输入事件的最小上报周期,则手机在下一个垂直同步信号1到来之后,才可能接收到下一个输入事件。由于接收到下一个输入事件的时间晚于下一个垂直同步信号1的时间,因此,手机可以确定下一个垂直同步信号1到来之后需要处理的目标输入事件均已收集完成。也就是说,手机在满足预设条件时,可以立即处理收集的目标输入事件(绘制目标输入事件对应的一个或多个图层),即在下一个垂直同步信号1到来之前处理收集的目标输入事件,而不需等待到下一个垂直同步信号1到来之后再处理收集到的目标输入事件,从而实现了对目标输入事件的提前处理,即提前进行图1A所示的input处理1。[0126] 示例性地,如图6所示,目标输入事件2对应的时间差t_diff2=t_vsync‑t2,由于t_diff2[0127] 通过本申请实施例提供的事件处理方法,手机能够在确定接收到的目标输入事件满足预设条件时,提前处理收集到的目标输入事件,无需等待下一个垂直同步信号1到来之后再处理收集到的目标输入事件。从而能够减少手机的时延,减少滑屏交互的响应时间,保证滑动跟手性。[0128] 此外,通过提前处理收集的目标输入事件,即将图1A中所示的处理1提前处理,能够提高图像绘制效率,减少图像绘制和渲染过程超时(超过一个屏幕刷新周期)的可能性,从而提升帧率,减少掉帧情况发生的可能性。尤其在屏幕刷新频率较高的情况下,即对每帧的绘制时间要求更高的情况下,比如屏幕刷新频率达到90Hz甚至120Hz时,能够有效避免掉帧情况的发生。[0129] 上面是以手机为例,从设备角度来描述本申请实施例提供的一种事件处理方法,下面基于图3所示的结构,从电子设备各模块的角度对本申请实施例提供的事件处理方法进行描述。[0130] 如图7所示,本申请实施例提供的事件处理方法,包括:[0131] S701、InputEventReceiver模块接收输入事件。[0132] 步骤S401中,手机接收输入事件具体是由InputEventReceiver模块执行的。[0133] InputEventReceiver模块可以接收到不同的输入事件。例如,输入事件可以包括:ACTION_MOVE事件、ACTION_DOWN事件或ACTION_UP事件等。[0134] S702、InputEventReceiver模块判断接收到的输入事件是否为目标输入事件。[0135] 步骤S402中,手机判断接收到的输入事件是否为目标输入事件具体是由InputEventReceiver模块执行的。[0136] 若InputEventReceiver模块确定接收到的输入事件是目标输入事件,例如ACTION_MOVE事件时,则InputEventReceiver模块可以确定该目标输入事件是否满足预设条件。若满足预设条件,则InputEventReceiver模块可以立即处理收集的目标输入事件,即将收集的目标输入事件发送至应用程序层进行绘制处理,无需等待下一个垂直同步信号1到来之后再处理目标输入事件。若不满足预设条件,则InputEventReceiver模块可以保存当前的目标输入事件,并继续接收下一个输入事件。[0137] 其中,预设条件包括目标输入事件的时间戳与下一个垂直同步信号1到来的时刻之间的时间差小于输入事件的最小上报周期。也就是说,InputEventReceiver模块可以通过目标输入事件的时间戳、下一个垂直同步信号1到来的时刻以及输入事件的最小上报周期,来目标输入事件是否满足预设条件。[0138] 在一些实施例中,InputEventReceiver模块确定目标输入事件是否满足预设条件可以包括以下步骤:[0139] S703、若InputEventReceiver模块确定接收到的输入事件为目标输入事件,则帧时间同步模块计算下一个垂直同步信号1到来的时刻。[0140] 若InputEventReceiver模块确定接收到的输入事件不是目标输入事件,则InputEventReceiver模块继续接收下一个输入事件。[0141] 其中,帧时间同步模块可以根据屏幕刷新周期TZ计算下一个垂直同步信号1到来的时刻t_vsync。具体的,下一个垂直同步信号1到来的时刻等于当前垂直同步信号1到来的时刻加上屏幕刷新周期。[0142] 在本申请实施例中,屏幕刷新周期是由帧时间同步模块获取。其中,帧时间同步模块可以在InputEventReceiver模块确定接收到的输入事件是目标输入事件之后,获取屏幕刷新周期;帧时间同步模块也可以在InputEventReceiver模块执行步骤S702之前,获取屏幕刷新周期。本申请实施例对帧时间同步模块获取屏幕刷新周期的时机不作限定,只要在帧时间同步模块计算下一个垂直同步信号1到来的时刻之前获取到屏幕刷新周期即可。[0143] S704、InputEventReceiver模块根据目标输入事件的时间戳和下一个垂直同步信号1到来的时刻计算时间差。[0144] 其中,输入事件的时间戳t_input表示,InputEventReceiver模块接收到该输入事件的时刻。[0145] 在一些实施例中,InputEventReceiver模块接收到输入事件时,即可获取该输入事件的时间戳。之后,若InputEventReceiver模块确定输入事件是目标输入事件,则InputEventReceiver模块获取的输入事件的时间戳即为目标输入事件的时间戳。在另一些实施例中,InputEventReceiver模块可以在确定输入事件是目标输入事件之后,再获取目标输入事件的时间戳。需要说明的是,本申请实施例对InputEventReceiver模块获取目标输入事件的时间戳的时机不作限定,只要InputEventReceiver模块在执行步骤S704之前获取到目标输入事件的时间戳即可。[0146] 其中,InputEventReceiver模块可以通过Choreographer模块从帧时间同步模块获取屏幕刷新周期和下一个垂直同步信号1到来的时刻。[0147] 在本申请实施例中,时间差表示下一个垂直同步信号1到来的时刻与目标输入事件的时间戳之间的差值。[0148] S705、InputEventReceiver模块判断时间差是否小于输入事件的最小上报周期。[0149] 在本申请实施例中,输入事件的最小上报周期是由开关配置模块配置的。例如,开关配置模块可以根据配置文件静态配置input事件的最小上报周期。[0150] 可选地,开关配置模块可以提前配置好输入事件的最小上报周期T_input,也可以根据用户需求配置输入事件的最小上报周期。本申请对开关配置模块对输入事件的最小上报周期进行配置的时机不作限定。[0151] InputEventReceiver模块可以从开关配置模块获取输入事件的最小上报周期。[0152] 在一些实施例中,InputEventReceiver模块可以在接收输入事件时,获取该输入事件的最小上报周期;在另一些实施例中,InputEventReceiver模块也可以在确定接收到的输入事件是目标输入事件之后,获取输入事件的最小上报周期。本申请实施例对InputEventReceiver模块获取输入事件的最小上报周期的时机不作限定,只要在步骤S705之前获取到输入事件的最小上报周期即可。[0153] InputEventReceiver模块计算得到时间差后,可以判断时间差与输入事件的最小上报周期的大小关系,从而判断时间差是否小于输入事件的最小上报周期。也就是说,InputEventReceiver模块判断当前的输入事件是否满足预设条件。[0154] S706、若时间差小于输入事件的最小上报周期,则InputEventReceiver模块确定满足预设条件,InputEventReceiver模块提前处理收集的目标输入事件。[0155] 在本申请实施例中,InputEventReceiver模块提前处理收集的目标输入事件表示,InputEventReceiver模块可以立即处理收集的目标输入事件,即在下一个垂直同步信号1到来之前处理收集的目标输入事件,而无需在下一个垂直同步信号1信号到来之后再处理收集的目标输入事件。处理收集的目标输入事件指的是,绘制收集的目标输入事件对应的一个或多个图层。[0156] 若时间差不小于输入事件的最小上报周期,则InputEventReceiver模块继续接收下一个输入事件。[0157] 在本申请实施例中,InputEventReceiver模块立即处理收集的目标输入事件时,InputEventReceiver模块将收集的目标输入事件发送至应用程序层进行后续绘制等处理。例如,由应用程序层调用GPU和CPU等进行绘制、渲染、图像帧合成和图像帧显示的处理。[0158] 通过本申请实施例提供的事件处理方法,InputEventReceiver模块能够在接收到的目标输入事件满足预设条件时,提前处理收集的目标输入事件(绘制收集的目标输入事件对应的一个或多个图层),无需等待下一个垂直同步信号1到来之后再处理收集到的目标输入事件。从而减少手机的时延,减少滑屏交互的响应时间,保证滑动跟手性。此外,通过提前处理收集的目标输入事件,还能够提高图像绘制效率,减少图像绘制和渲染过程超时(超过一个屏幕刷新周期)的可能性,从而提升帧率,减少掉帧情况发生的可能性。[0159] 本申请实施例还提供一种事件处理方法。如图8所示,以执行主体是手机为例,该事件处理方法包括:[0160] S801、在手机接收到第一目标垂直同步信号之后,若手机接收到的输入事件是目标输入事件,且满足预设条件,则在第二目标垂直同步信号到来之前,手机处理该目标输入事件。[0161] 其中,第二目标垂直同步信号是第一目标垂直同步信号的下一个目标垂直同步信号。[0162] 在一些实施例中,目标垂直同步信号指的是上述垂直同步信号1。目标输入事件表示现有技术中需要等待下一个垂直同步信号1到来之后,才能处理的输入事件。例如,目标输入事件可以是ACTION_MOVE事件。[0163] 在一些实施例中,手机处理目标输入事件包括:手机绘制目标输入事件对应的一个或多个图层。也就是说,本申请实施例中,手机处理目标输入事件具体是指,手机绘制该目标输入事件对应的一个或多个图层,进而进行后续的图像帧合成和图像帧显示过程。[0164] 在一些实施例中,手机处理目标输入事件还包括,手机处理第二时间段内接收到的其他目标输入事件。其中,第二时间段表示,手机接收到所述第一目标垂直同步信号的时刻与接收到所述目标输入事件的时刻之间的时间段。即,在本申请实施例中,手机还可以处理在接收到第一目标垂直同步信号的时刻与接收到所述目标输入事件的时刻之间的时间段内接收到的其他目标输入事件。[0165] 在一些实施例中,预设条件具体包括:目标输入事件对应的第一时间段小于输入事件的最小上报周期。这里第一时间段表示,手机接收到目标输入事件的时刻与第二目标垂直同步信号到来的时刻之间的时间段。换句话说,预设条件包括目标输入事件的时间戳与下一个垂直同步信号1到来的时刻之间的时间差小于输入事件的最小上报周期。[0166] 若接收到的输入事件是目标输入事件,并且满足预设条件,则手机可以提前处理目标输入事件。也就是说,在下一个垂直同步信号1到来之前,手机就处理目标输入事件。例如,在下一个垂直同步信号1到来之前,手机就绘制该目标输入事件对应的一个或多个图层。[0167] 这里,步骤S801可以对应上述步骤S401‑S406的方法流程。[0168] 若接收到的目标输入事件不满足预设条件,该事件处理方法还包括步骤S802:[0169] S802、若手机接收到的输入事件是目标输入事件,且不满足预设条件,则手机接收下一个输入事件。[0170] 该步骤对应上述步骤S405中“时间差不小于输入事件的最小上报周期”的情况。[0171] 若接收到的输入事件是目标输入事件,且不满足预设条件,则表示目标输入事件的时间戳与下一个垂直同步信号1到来的时刻之间的时间差大于或等于输入事件的最小上报周期。在这种情况下,手机还可能在下一个垂直同步信号1到来之前接收目标输入事件,因此不能认为下一个垂直同步信号1到来之后需要处理的目标输入事件均已收集完成。这样,手机继续接收下一个输入事件。[0172] 通过本申请实施例提供的事件处理方法,手机能够在确定接收到的目标输入事件满足预设条件时,提前处理收集到的目标输入事件,无需等待下一个垂直同步信号1到来之后再处理收集到的目标输入事件。从而能够减少手机的时延,减少滑屏交互的响应时间,保证滑动跟手性。[0173] 此外,通过提前处理收集的目标输入事件,即将图1A中所示的处理1提前处理,能够提高图像绘制效率,减少图像绘制和渲染过程超时(超过一个屏幕刷新周期)的可能性,从而提升帧率,减少掉帧情况发生的可能性。尤其在屏幕刷新频率较高的情况下,即对每帧的绘制时间要求更高的情况下,比如屏幕刷新频率达到90Hz甚至120Hz时,能够有效避免掉帧情况的发生。[0174] 示例性的,在一种测试场景下,如表1所示,当用户点击手机桌面上的最近(recent)键,进入最近任务时,采用现有技术的事件处理方法,该过程平均需要9313us;而采用本申请实施例提供的事件处理方法,该过程平均仅需要6429us,响应时间减少了30.97%。由此可见,采用本申请实施例提供的事件处理方法,能够有效减少用户点击recent键进入最近任务的响应时间。[0175] 再示例性的,在另一种测试场景下,如表1所示,当用户使用某一应用的过程中,滑动屏幕进入应用的下一个界面时,采用现有技术的事件处理方法,手机显示下一个界面平均需要7361us;而采用本申请实施例提供的事件处理方法,手机显示下一个界面平均需要5873us,响应时间减少了20.62%。由此可见,采用本申请实施例提供的事件处理方法,能够有效减少用户滑动进入应用的下一个显示界面的响应时间。综上,采用本申请实施例提供的事件处理方法,能够有效减少滑屏交互的响应时间,保证滑动跟手性。[0176] 表1[0177]测试场景 现有技术(AVG) 本方法(AVG) 优化比例点击recent键,进入最近任务 9313us 6429us 30.97%某一应用的界面滑动 7361us 5873us 20.62%[0178] 此外,当用户使用某一应用的过程中,滑动屏幕进入应用的下一个界面时,采用现有技术的事件处理方法,144帧图像中丢失22帧,丢帧率为0.152778;而采用本申请实施例提供的事件处理方法,157帧图像中丢失4帧,丢帧率为0.025478,丢帧比例减少了12.73%。由此可见,采用本申请实施例提供的事件处理方法,能够有效提升帧率,减少掉帧情况发生的可能性。另外,在又一测试场景中,当某一应用退后台时,采用本申请实施例提供的事件处理方法,该应用的平均绘制时间从9.3ms可以优化到6.5ms,平均绘制时间优化了30%。由此可见,采用本申请实施例提供的事件处理方法,能够减少应用绘制时间,从而进一步说明,采用本申请实施例提供的事件处理方法能够提升帧率,减少掉帧情况发生的可能性。[0179] 可以理解的是,为了实现上述功能,电子设备包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。[0180] 本实施例可以根据上述方法示例对电子设备进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。[0181] 示例性地,图9为本申请实施例提供的电子设备的结构示意图。如图9所示,本申请实施例提供了一种电子设备900,包括接收单元901、判断单元902、获取单元903、计算单元904和确定单元905。[0182] 其中,接收单元901用于执行步骤S401和步骤S701;判断单元902用于执行步骤S402、步骤S405、步骤S702和步骤S705;获取单元903用于获取屏幕刷新周期、input事件上报周期和input事件的事件戳;计算单元904用于执行步骤S403、步骤S404、步骤S703和步骤S704;确定单元905用于执行步骤S406和步骤S706。[0183] 本申请的实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的电子设备事件处理方法。[0184] 本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行上述相关步骤,以实现上述实施例中电子设备执行的电子设备事件处理方法。[0185] 另外,本申请实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中电子设备执行的电子设备事件处理方法。[0186] 其中,本申请实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法。因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果。此处不再赘述。[0187] 通过以上实施方式的描述,本领域技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明。实际应用中,可根据需要将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或部分功能。[0188] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0189] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0190] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0191] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(readonlymemory,ROM)、随机存取存储器(randomaccessmemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。[0192] 以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
专利地区:广东
专利申请日期:2020-09-30
专利公开日期:2024-06-18
专利公告号:CN114327697B