一种对输入事件读取处理优化方法、非易失性存储器及终端设备与流程

文档序号:22236915发布日期:2020-09-15 19:46阅读:171来源:国知局
一种对输入事件读取处理优化方法、非易失性存储器及终端设备与流程

本发明涉及通信技术领域,尤其涉及一种对输入事件读取处理优化方法、非易失性存储器及终端设备。



背景技术:

在现有的移动设备的输入事件处理过程中,输入事件读取的都是在一个单独的进程中,然后有一个转门用于分发的线程,将当前接收到的输入事件分发到相应的窗口上,在分发到窗口的过程中一般都存在进程间通信。

例如,android的输入事件是在一个名为inputmanagerservice的输入事件管理服务中进行读取和分发,该服务读取输入事件后会分发给一个名为windowsmanagerservice的窗口管理服务,windowsmanagerservice会再传递给焦点app应用,app应用收到后会再在自己内部做相应处理。android系统上该过程中输入事件的分发传递至少经历了一次进程间通信(从windowsmanagerservice到app应用)。在一些对输入事件有快速响应和处理要求的应用中,这明显降低了应用程序的性能和用户体验。



技术实现要素:

针对现有技术中对输入事件有快速响应和处理要求的应用存在的上述问题,现提供一种旨在提高应用程序的性能和用户体验的一种对输入事件读取处理优化方法、非易失性存储器及终端设备。

具体技术方案如下:

一种对输入事件读取处理优化方法其中,包括以下步骤:

读取输入事件;

判断当前启动的应用是否为预设应用;

在所述应用为所述预设应用时,将输入设备节点的控制权赋予当前的所述预设应用,所述预设应用直接从所述输入设备节点获取所述输入事件,其中,当所述预设应用关闭时,释放所述输入设备节点的控制权。

优选的,所述操作系统中的窗口管理器进程提供输入工作线程,所述输入工作线程用于读取输入事件。

优选的,所述操作系统中的窗口管理器根据当前启动的所述应用的配置标识判断当前的所述应用是否为所述预设应用。

优选的,当所述操作系统中的窗口管理器判断出当前的所述应用为所述预设应用时,所述窗口管理器将所述输入设备节点的控制权赋予所述预设应用。

优选的,释放所述输入设备节点的控制权的方法具体包括:

所述预设应用通过socket通信发出信息给所述操作系统中的窗口管理器;

所述操作系统中的窗口管理器根据所述信息,重新掌握所述输入设备节点的控制权。

优选的,当所述特殊应用出现故障时,所述操作系统中的窗口管理器根据所述故障信息主动收回所述输入设备节点的控制权。

优选的,所述输入事件包括,通过输入设备或者模拟输入设备获取的用户的操作,所述输入设备包括触摸屏幕或者手写笔或者鼠标键盘。

优选的,在所述应用为非所述预设应用时,所述述操作系统中的窗口管理器进程提供调度线程,通过调度线程将所述输入事件分发至所述应用。

还包括一种非易失性存储器,其中存储有软件,其中,所述软件用以实现上述的对输入事件读取处理优化方法。

还包括一种终端设备,包括一个或多个处理器和与其耦合的一个或多个存储器,其中,所述一个或多个存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;

所述一个或多个处理器用于执行所述计算机指令并实现上述的对输入事件读取处理优化方法。

上述技术方案具有如下优点或有益效果:

用户在一个不间断的完整操作过程中进程间通信次数减少到两次;

输入事件的传递使用用线程间通信替代进程间通信,耗系统资源和执行开销大幅度减少;所以能极大的提高app应用对输入事件的响应速度;

窗口管理器对特定应用做相应的配置实现启动或者停止特定应用对输入设备的控制权。

通过应用线程读取输入设备事件,进程间通信替代之前窗口管理器通过协议传递给应用进程间通信,提高输入事件的响应速度。

通过输入设备读取与输入数据处理在同一个进程中的资源共享,来提高输入数据的读写处理效率,从而达到提高输入事件的响应速度。

附图说明

参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。

图1为本发明一种对输入事件读取处理优化方法实施例的流程图;

图2为本发明一种对输入事件读取处理优化方法第一实施例的流程图;

图3为本发明一种对输入事件读取处理优化方法第二实施例的流程图;

图4为本发明一种终端设备的实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

本发明包括一种对输入事件读取处理优化方法。

一种对输入事件读取处理优化方法,适用于基于linux为内核的操作系统,其中,包括以下步骤:

读取输入事件;

判断当前启动的应用是否为预设应用;

在应用为预设应用时,将输入设备节点的控制权赋予当前的预设应用,预设应用直接从输入设备节点获取输入事件,其中,当预设应用关闭时,释放输入设备节点的控制权。

具体而言,如图1所示:

步骤s1、读取输入事件;

步骤s2、判断当前启动的应用是否为预设应用;

步骤s3、在应用为预设应用时,将输入设备节点的控制权赋予当前的预设应用,预设应用直接从输入设备节点获取输入事件,其中,当预设应用关闭时,释放输入设备节点的控制权。

本技术方案中的对输入事件读取处理优化方法,适用于基于linux为内核的操作系统,如以wayland做为显示服务协议的国产定制操作系统。一般输入事件的读取是在显示的服务端的一个线程中,事件处理分发在另外一个名为system-main的窗口管理器的一个线程中,监听到输入事件后system-main会将输入事件通过wayland协议分发给顶层应用窗口去处理,该顶层应用窗口收到事件后再做内部分发和处理。该操作系统上该过程中输入事件的分发传递至少经历了一次进程间通信(从system-main到顶层应用窗口)。在一些对输入事件有快速响应和处理要求应用中或有高频率的输入事件产生时,这明显降低了应用程序的性能、阻碍了用户获得更好体验的可能。

另外是android系统,其中,android的输入事件是在一个名为inputmanagerservice的输入事件管理服务中进行读取和分发,该服务读取输入事件后会分发给一个名为windowsmanagerservice的窗口管理服务,windowsmanagerservice会再传递给焦点app应用,app应用收到后会再在自己内部做相应处理。android系统上该过程中输入事件的分发传递至少经历了一次进程间通信(从windowsmanagerservice到app应用)。在一些对输入事件有快速响应和处理要求的应用中,这明显降低了应用程序的性能和用户体验。

本发明的技术方案中,linux窗口管理器能通过其自身的机制让该应用有直接读取输入事件的能力,输入事件在分发传递过程中只需要在本次用户操作的开始和结束时,与linux窗口管理器进行两次进程间通信(一个字节的命令控制类消息:on,off,以及几个字节的通信协议特有的头尾消息),而在其中间操作过程中则完全不需要与system-main进行任何关于输入事件的进程间通信,而是使用用线程间通信替代进程间通信,从而极大提高了对输入事件的响应速度,而不像优化之前的状态:用户操作的每一次触屏产生的一次输入事件都需要一次进程间通信,才能传递到对应的app应用。

在一种较优的实施方式中,操作系统中的窗口管理器进程提供输入工作线程,输入工作线程用于读取输入事件。

上述技术方案中,以上述的国产操作系统(元心操作系统)为例进行说明,元心操作系统上在窗口管理器进程(system-main)中存在一个输入工作线程(inputhandlerthread)专门用于读取特定输入事件,如上述的输入事件。

在一种较优的实施方式中,操作系统中的窗口管理器根据当前启动的应用的配置标识判断当前的应用是否为预设应用。

上述技术方案中,针对预设应用即特殊应用,开发时需要根据元心操作系统应用(app)开发机制在sopconfig.xml中添加相应的配置信息:inputspecenable=true。当system-main读取到启动的应用的配置信息中的inputspecenable=true,则判断出当前的应用为预设应用,预设应用表示对输入事件有快速响应和处理要求的应用。

在一种较优的实施方式中,当操作系统中的窗口管理器判断出当前的应用为预设应用时,窗口管理器将输入设备节点的控制权赋予预设应用。

在一种较优的实施方式中,释放输入设备节点的控制权的方法具体包括:

预设应用通过socket通信发出信息给操作系统中的窗口管理器;

操作系统中的窗口管理器根据信息,重新掌握输入设备节点的控制权。

在一种较优的实施方式中,当特殊应用出现故障时,操作系统中的窗口管理器根据故障信息主动收回输入设备节点的控制权。

上述技术方案中,为防止该预设应用意外发生(比如卡顿、假死等,导致系统的输入事件无法被其他应用使用),还有一种应用被动交还机制保证元心操作系统上输入事件的正常运转,该被动机制是system-main通过元心操作系统的已有的机制判断手写笔特殊应用是否出现意外,如果出现意外则system-main主动收回对输入设备节点/dev/input/event*的控制权。

在一种较优的实施方式中,输入事件包括,通过输入设备或者模拟输入设备获取的用户的操作,输入设备可包括触摸屏幕或者手写笔或者鼠标键盘等

在一种较优的实施方式中,在应用为非预设应用时,述操作系统中的窗口管理器进程提供调度线程,通过调度线程将输入事件分发至应用。

在一种较优的实施方式中,应用或预设应用于获取输入事件后,执行对应的处理操作。

以下以操作系统为国产元心系统为例,进行具体说明,如图2所示:

步骤s11,获取触摸屏幕或者手写笔或者鼠标键盘等输入设备或者模拟输入设备对元心操作系统产生输入事件;

步骤s12、元心操作系统上在system-main(窗口管理器进程)中存在一个inputhandlerthread线程专门用于读取特定输入事件;

步骤s13、对当前启动的应用进行判断是否为预设应用(启动手写笔这种类似的特定应用或者点击特殊区域时);

若是,执行步骤s14;

若否,执行步骤s16;

步骤s14、system-main将输入设备节点/dev/input/event*的控制权暂时交给当前的预设应用,该应用可以直接从输入设备节点/dev/input/event*获取输入事件的信息,然后再在自己内部做分发和处理;

步骤s15、当前手写笔这种类似的特殊应用关闭(不再需要继续使用输入设备)时,通过socket方式发出消息给system-main,主动交还输入设备节点/dev/input/event*的控制权给system-main,此时system-main恢复对输入设备节点/dev/input/event*的控制权,并返回步骤s11;

步骤s16、system-main中的keydispatch线程根据窗口焦点和层级策略将输入事件传递给相应的app应用;app应用收到输入事件后再在自己内部做相应的处理。

还包括一种基于linux内核的操作系统,其中,操作系统采用上述的对输入事件读取处理优化方法。

以下以操作系统为安卓操作系统为例进行说明,如图3所示:

步骤s21、获取触摸屏幕或者手写笔或者鼠标键盘等输入设备或者模拟输入设备对linux系统产生的输入事件;

步骤s22、linux系统上的窗口管理器进程(比如:基于xwindowssystem的ubuntu系统中的xorg,一般的gnome、kde等桌面环境都基本上会采用xorg、xfree86等xserver协议实现窗口管理器)中有专门的线程(xorg的主线程,包含桌面的linux系统对于输入事件这种最基本的用户交互手段,都会使用专门的线程监听输入事件,以便快速相应用户操作)用于读取特定输入事件;

步骤s23、linux系统的窗口管理器判断当前启动的应用是否为预设应用(当启动手写笔这种类似的特定应用或者点击特殊区域时),其中,linux系统上的应用需要根据当前app应用自身的架构特点添加配置文件或使用linux环境变量设置inputspecenable=true值都可以,只要将该特殊信息传入程序中即可,当然也可以将该app默认就做成支持inputspecenable=true;

若是,执行步骤24;

若否,执行步骤26;

步骤s24、linux系统窗口管理器(比如:xorg)将输入设备节点/dev/input/event*的控制权暂时交给当前的特殊app应用,该app应用可以直接从输入设备节点/dev/input/event*获取输入事件的信息,然后再在自己内部做分发和处理;

步骤s25、当前手写笔这种类似的特殊应用关闭(不再需要继续独占输入设备)时,通过进程间通信方式(比如:linux下的socket方式)发出消息给linux窗口管理器(比如:xorg),并主动交还输入设备节点/dev/input/event*的控制权给linux窗口管理器(比如:xorg),此时linux窗口管理器(比如:xorg)恢复对输入设备节点/dev/input/event*的控制权。

注意:元心系统上述的“防止该特殊应用意外发生”机制同样适用用于linux系统窗口管理器(比如:xorg),返回步骤s21;

步骤s26、linux窗口管理器(比如:xorg)中的keydispatch线程根据窗口焦点和层级策略将输入事件传递给相应的app应用;app应用收到输入事件后再在自己内部做相应的处理。

本发明的技术方案中还包括一种非易失性存储器。

一种非易失性存储器,其中存储有软件,其中,该软件用以实现上述的对输入事件读取处理优化方法。

本发明的技术方案中还包括一种终端设备。

如图4所示,一种终端设备的实施例,包括一个或多个处理器b和与其耦合的一个或多个存储器a,其中,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;

一个或多个处理器用于执行计算机指令并实现上述的对输入事件读取处理优化方法。

上述技术方案中,实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤:而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。上述的终端设备可包括智能手表,智能手机,平板设备等。

上述技术方案,通过窗口管理器对特定应用做相应的配置实现启动或者停止特定应用对输入设备的控制权。通过应用线程读取输入设备事件,进程间通信替代之前窗口管理器通过协议传递给应用进程间通信,提高输入事件的响应速度。通过输入设备读取与输入数据处理在同一个进程中的资源共享,来提高输入数据的读写处理效率,从而达到提高输入事件的响应速度。

以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

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