CN104391649A - 一种多活动触屏消息控制方法及系统 - Google Patents
一种多活动触屏消息控制方法及系统 Download PDFInfo
- Publication number
- CN104391649A CN104391649A CN201410731169.4A CN201410731169A CN104391649A CN 104391649 A CN104391649 A CN 104391649A CN 201410731169 A CN201410731169 A CN 201410731169A CN 104391649 A CN104391649 A CN 104391649A
- Authority
- CN
- China
- Prior art keywords
- activity
- touch screen
- focus
- screen message
- main thread
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及多活动触屏消息控制方法及系统,由窗口管理服务组件负责窗口管理并对底层的触屏消息进行监控管理;由主线程接收窗口管理服务组件发送的触屏消息,派发给对应的活动及所属的显示组件进行触屏消息的处理;由活动管理服务组件负责对活动的堆栈进行管理,并向窗口管理服务组件提供所有显示的活动的相关信息及其更新情况;活动管理服务组件与各活动所属应用的主线程进行交互,控制焦点切换;活动管理服务组件根据窗口管理服务组件的请求进行拖动处理,以改变触摸点所在活动的显示区域的位置,并通知触摸点所在活动对应的主线程刷新该活动的显示。对触摸屏显示的多个活动,本发明可以根据触摸位置将触屏消息准确派发到对应活动。
Description
技术领域
本发明涉及智能系统触摸屏控制领域,特别涉及一种多活动触屏消息控制方法及系统。
背景技术
目前安卓(Android)智能系统中,每个界面只能显示一个应用的一个活动(Activity),当前活动获得焦点并占据整个屏幕进行显示。当打开新的活动时,先前的活动失去焦点,不再显示;新的活动获得焦点,并显示在整个屏幕中。安卓系统中通过窗口管理服务组件(WindowManagerService)来负责对整个触屏消息的控制。现有的窗口管理服务组件支持一种单活动结构的触屏控制机制,只保留当前处于焦点的(即激活的)活动的信息,并在接收到底层的触屏消息后,直接将触屏消息转给处于焦点的活动进行处理,因而无法满足多个活动接收触屏消息的多活动结构功能要求。
具体而言,在安卓系统启动的时候,系统服务器(SystemServer)进程会启动窗口管理服务组件,该窗口管理服务组件进而通过系统输入管理器(InputManager)来监控触屏消息。触屏消息都是直接分发给当前激活的活动窗口来处理。当一个应用打开时,应用的活动就会占据整个屏幕,在屏幕中显示活动下面的显示(View)组件,活动在创建激活的同时,会到窗口管理服务组件中注册接收触屏消息的通道(即触屏消息处理通道);当有触屏消息触发时,输入管理器将触屏消息通过触屏消息处理通道发送给当前激活的活动进行处理。当有新的活动激活时,先前激活的活动就要向窗口管理服务组件取消接收触屏消息处理通道,以便由新激活的活动重新到窗口管理服务组件中注册触屏消息处理通道。在这种机制下,窗口管理服务组件始终只记录当前激活的活动的触屏消息处理通道,并且将所有的触屏消息发送给当前唯一的活动进行处理。
随着使用安卓系统的手机屏幕越来越大,分辨率越来越高,多个活动同时在屏幕中显示成为趋势。然而,目前的窗口管理服务组件只记录当前处于焦点的活动,当有触屏消息过来时,直接传递给处于焦点的活动进行处理。而当屏幕中有多个活动时,每个活动占据部分显示区域,这就需要窗口管理服务组件能够根据触屏点击位置以及各个活动的显示区域,将触屏消息准确的传给对应的活动进行处理。当前的窗口管理服务组件的触屏控制机制,显然无法满足根据用户在屏幕中的触摸位置将触屏消息发送给不同活动的要求。
发明内容
为了解决现有技术的问题,本发明提供一种多活动触屏消息控制方法及系统,重新制定了窗口管理服务组件中的触摸屏控制机制,当有多个活动显示在触摸屏上时,能够根据触摸的位置对触屏消息进行不同的处理,以支持将触屏消息准确派发到显示在触摸屏中的多个活动。
为了达到上述目的,本发明的一个技术方案是提供一种多活动触屏消息控制方法,其中,同时显示在触摸屏上的多个活动,包含在初始时获得焦点的第一活动,和在初始时失去焦点的第二活动;
在触摸屏上收到触屏消息时,窗口管理服务组件对触摸点在触摸屏上的位置进行判断:若触摸点处在第一活动的显示区域内,将触屏消息转给获得焦点的第一活动进行后续处理;若触摸点处在第二活动的显示区域内,则进行焦点切换使第二活动获得焦点后,将触屏消息转给切换后获得焦点的第二活动进行后续处理;
其中,在进行焦点切换时,活动管理服务组件与第一活动所属应用的第一主线程交互,由该第一主线程进行使第一活动失去焦点的操作来向窗口管理服务组件解注册触屏消息处理通道;活动管理服务组件还与第二活动所属应用的第二主线程交互,由该第二主线程进行使第二活动获得焦点的操作来向窗口管理服务组件注册触屏消息处理通道,以便获取触屏消息进行后续处理。
优选地,所述触屏消息包含下操作消息、移动消息、上操作消息;
若下操作消息的触摸点,处在失去焦点的活动的显示区域时,进行焦点切换,并刷新整个显示界面;
若移动消息的触摸点,处在失去焦点的活动的显示区域时,活动管理服务组件根据窗口管理服务组件的请求进行拖动处理来改变触摸点所在活动的显示区域的位置,并通知触摸点所在活动的主线程刷新该活动的显示;
若上操作消息的触摸点,处在失去焦点的活动的显示区域时,结束拖动处理,完成对触屏消息的处理。
优选地,所述窗口管理服务组件收到触屏消息时,以及主线程对触屏消息进行处理时,分别对触屏消息进行有效性检查;
当收到触屏信息中的移动消息或上操作消息之前,先收到过所述下操作消息时,判断收到的触屏消息是有效的,否则判断收到的触屏信息是无效的;
有效性检查之后,初始时或切换后获得焦点的活动的主线程对有效的触屏信息进行处理;无效的触屏消息被丢弃而不再处理。
优选地,所述活动管理服务组件向窗口管理服务组件配置所有显示在触摸屏上的活动的相关信息,包括各活动的显示区域及焦点状态;窗口管理服务组件将活动的相关信息进行保存;
活动的显示区域和/或焦点状态发生任意变化时,所述活动管理服务组件都对活动的相关信息进行更新,并通知窗口管理服务组件对所保存的活动的相关信息进行更新。
优选地,收到触屏信息时,对其类型进行判断:
当收到的是下操作消息时,所述窗口管理服务组件将开始句柄变量设为真,以标识一个完整的触屏消息处理流程开始,并进入下操作消息处理流程;
当收到的不是下操作消息后,进一步判断所述开始句柄变量是否为真:
所述开始句柄变量为假时,判断触屏消息无效而不做处理;
所述开始句柄变量为真且判断收到的是有效的移动消息时,进入移动消息处理流程;所述开始句柄变量为真且判断收到的是有效的上操作消息时,进入上操作消息处理流程,之后设置所述开始句柄变量为假,以标识一个完整的触屏消息流程结束。
优选地,所述下操作消息处理流程中,先将原先为真的拖动状态变量设为假;
由所述窗口管理服务组件包含的输入管理器根据触屏消息的触摸点的位置,对窗口管理服务组件中保存所有显示的活动的相关信息的列表进行遍历,从中查找到触摸点所在的活动并判断该活动的焦点状态:
若触摸点所在活动获得焦点时,输入管理器通过焦点输入通道变量获取该活动所属应用及其主线程,将下操作消息转给该主线程进行处理;
若触摸点所在活动失去焦点时,设置所述拖动状态变量为真,标识进入拖动处理状态,转由所述活动管理服务组件进行拖动处理。
优选地,所述移动消息处理流程中,所述输入管理器根据触屏消息的触摸点的位置,遍历所述列表来查找触摸点所在的活动,判断该活动的焦点状态,并判断拖动状态变量的状态:
若拖动状态变量为真时,转由所述活动管理服务组件进行拖动处理;
若拖动状态变量为假且触摸点所在活动失去焦点时,不做处理;
若拖动状态变量为假且触摸点所在活动获得焦点时,所述输入管理器通过所述焦点输入通道变量获取该活动所属应用及其主线程,并将移动消息转给该主线程进行处理。
优选地,所述上操作消息处理流程中,输入管理器根据触屏消息的触摸点的位置,遍历所述列表来查找触摸点所在的活动,判断该活动的焦点状态,并判断拖动状态变量的状态:
若拖动状态变量为真时,设置该拖动状态变量为假,以标识拖动处理结束;
若拖动状态变量为假且触摸点所在活动失去焦点时,不做处理;
若拖动状态变量为假且触摸点所在活动获得焦点时,所述输入管理器通过所述焦点输入通道变量获取该活动所属应用及其主线程,并将上操作消息转给该主线程进行处理。
优选地,所述输入管理器包含输入读取线程和输入调度线程:
其中,所述输入读取线程对底层的触屏消息进行监控,并将读取到的触屏消息转交给所述输入调度线程进行后续处理。
本发明的另一个技术方案是提供一种多活动触屏消息控制的系统,其中包含:
窗口管理服务组件,其负责窗口管理,对底层的触屏消息进行监控和管理;
主线程,负责对其所在应用内部的活动进行管理;所述主线程接收所述窗口管理服务组件发送的触屏消息,派发给对应的活动及所属的显示组件进行触屏消息的处理;
活动管理服务组件,负责对包含触摸屏上所有显示的活动的堆栈进行管理,并向所述窗口管理服务组件提供所有显示的活动的相关信息及其更新的情况;
所述活动管理服务组件与各活动所属应用的主线程进行交互,控制焦点切换流程,使初始获得焦点的活动对应的主线程向窗口管理服务组件解注册触屏消息处理通道使初始获得焦点的活动失去焦点,而使初始失去焦点的活动对应的主线程向窗口管理服务组件注册触屏消息处理通道使初始失去焦点的活动在切换后获得焦点;
所述活动管理服务组件根据窗口管理服务组件的请求进行拖动处理,以改变触摸点所在活动的显示区域的位置,并通知触摸点所在活动对应的主线程刷新该活动的显示。
与现有技术相比,本发明提供的多活动触屏消息控制方法及系统,其优点在于:本发明制定了一整套安卓系统中多活动触屏消息控制流程;如果触摸位置处在获得焦点的活动的显示区域内,则将触屏消息转给处于焦点的活动进行处理;如果触摸位置处在没有获得焦点的活动的显示区域,则控制该活动获得焦点,并可以进行后续处理;通过活动管理服务组件/窗口管理服务组件/应用主线程之间交互,实现对活动的拖动处理;本发明将触屏消息的有效性检查提前到窗口管理服务组件中进行处理,并制定了对应的有效性检查策略,有效减少进程间通信开销。
附图说明
图1是实现本发明所述多活动触屏消息控制的系统的框图;
图2是本发明所述方法的流程示意图;
图3是本发明所述方法中Down消息处理流程示意图;
图4是本发明所述方法中Move消息处理流程示意图;
图5是本发明所述方法中Up消息处理流程示意图。
具体实施方式
如图1所示,本发明所述多活动触屏消息控制的系统,涉及到安卓系统中的三个模块:窗口管理服务组件10(WindowManagerService)、活动管理服务组件20(ActivityManagerService)、应用进程的主线程30(ActivityThread)。
在安卓系统启动过程中,系统服务器(SystemServer)进程会启动所述窗口管理服务组件10和活动管理服务组件20这两个系统服务,这两个组件均运行在SystemServer进程中。
所述窗口管理服务组件10主要负责窗口管理,在启动过程中会初始化输入管理器(InputManager)来负责整个触屏消息的控制和管理;InputManager在初始化完成后会启动两个线程,输入读取线程(InputReaderThread)和输入调度线程(InputDispatcherThread):其中,InputReaderThread用来监控底层的触屏消息,当有触屏消息过来后,InputReaderThread读取触屏消息并转交给InputDispatcherThread进行后续处理。
所述活动管理服务组件20主要负责活动(Activity)的管理,以实现Activity的显示和切换等相关操作,根据Activity打开的先后顺序,通过堆栈来管理Activity列表,在Activity发生焦点切换时,和各Activity所处的应用进程的主线程30进行交互,控制整个焦点切换流程,根据窗口管理服务组件10的请求对Activity进行拖动处理,并将相关Activity的信息更新到窗口管理服务组件10中,以便窗口管理服务组件10的InputManager模块进行触屏消息的有效控制。
每个应用在启动时,都会启动一个主线程30,用来管理应用进程内部的Activity,同时通过该线程来接收窗口管理服务组件10发送过来的触屏消息,并派发给对应的Activity及其所属的显示(View)组件进行触屏消息的处理。在活动管理服务组件20进行Activity拖动处理时,需要通知应用主线程30对Activity进行刷新显示,在进行Activity焦点切换时,需要向窗口管理服务组件10注册/解注册触屏消息处理通道。
当安卓系统初始化完成后,就会有应用进程的Activity处于焦点,此时应用进程的主线程30就会向窗口管理服务组件10注册处于焦点的Activity的触屏消息处理通道,由窗口管理服务组件10保存在mFocusInputChannel(焦点输入通道)变量中;InputManager通过该mFocusInputChannel变量就可以获知当前处于焦点的Activity所处的应用进程以及对应的主线程30,以便将触屏消息转交给其对应的主线程30进行后续处理。
当有多个Activity显示在屏幕上时,负责管理Activity的活动管理服务组件20会向窗口管理服务组件10配置所有显示在屏幕上的Activity的相关信息,包括显示区域和焦点状态。为了完成多Activity触屏消息控制,窗口管理服务组件10将Activity的相关信息保存至mDisplayActivityList列表,InputManager监控到底层的触屏消息后,根据触屏消息的触摸点来确定具体点击了哪个Activity,然后进行后续处理。Activity相关信息的更新由活动管理服务组件20来完成。每次Activity显示区域和焦点状态发生变化时,都需要更新窗口管理服务组件10所保存的Activity相关信息。
在安卓系统中,触屏消息分为三种类型:Down(下操作)消息、Move(移动)消息、Up(上操作)消息,三种类型的消息都会附带对应触摸点的坐标。一个完整的触屏消息过程首先会是Down消息,然后会是连续的Move消息,最后是Up消息。InputDispatcherThread线程收到触屏消息后,首先会对触屏消息进行有效性检查:对于无效的触屏消息(比如没有Down类型的触屏消息,而直接收到的Move或Up消息),则直接丢弃。对于有效的触屏消息才进入处理流程,转给应用进程的主线程30进行处理。应用进程的主线程30处理触屏消息时仍然要做有效性检查,从而能够减少应用进程对无效触屏消息的接收和处理,因为每一次将消息转给应用进程都是一次跨进程的通信,系统开销会较大,提前进行触屏消息的有效性检查,可以减少这方面的开销,提高系统效率。
本发明中,对于Down类型的触屏消息,会根据坐标点判断点击在哪个Activity中,对于处于焦点的Activity,则直接转交该Activity进行处理;对于点击了非焦点的Activity,则进行Activity焦点切换,重新刷新界面。对于Move类型的触屏消息,如果点击的是处于焦点的Activity,同Down消息一样,直接转交该Activity进行处理;如果点击的是非焦点的Activity,则进行拖动处理,并根据Activity位置发生的变化,刷新Activity显示。对于Up类型的触屏消息,如果点击的是处于焦点的Activity,同Down消息一样,直接转交该Activity进行处理,如果点击的是非焦点的Activity,则拖动处理结束,一个完整的触屏消息处理流程就结束了。本发明的总体原则,就是根据触摸点来判断点击的是哪个Activity,然后再根据Activity的状态分别进行处理。
如图2所示,本发明中进行触屏消息的处理过程中,InputReaderThread接收到触屏消息,转给InputDispatcherThread进行处理,之后对获取的触屏消息的类型进行判断:
一个完整的触屏消息处理流程都是从Down消息开始,所以一旦判断收到的是Down消息,则设置mBeginHandle(开始句柄)变量为true,标识一个完整的触屏消息流程开始,转到Down消息处理流程进行后续处理;在之后收到Move或Up消息时,才认为是有效消息。否则,如果判断收到的不是Down消息,且进一步判断mBeginHandle变量为false时,则将收到的触屏消息视为无效消息,直接丢弃,不再做任何处理。
当所述mBeginHandle变量为true,且判断收到有效的Move消息后,转到相应的Move消息流程进行处理。而当所述mBeginHandle变量为true,且判断收到有效的Up消息后,需要设置该mBeginHandle变量为false,标识一个完整的触屏消息流程结束,此后就只有收到Down消息才被视为有效消息。如果在mBeginHandle为false,即没有收到Down消息的前提下,收到了Move/Up类型的消息,均视为无效消息,直接丢弃处理。
如图3所示,Down消息处理流程中,如果mDragStatus(拖动状态)变量为true的,将其设为false。之后,InputManager通过触屏消息的坐标点,遍历mDisplayActivityList列表,从中找到点击的Activity,由于屏幕中没有空白区域,始终有Activity显示在某个区域,所以一定能从mDisplayActivityList列表中找到对应的Activity。
进而判断点击的Activity是否处于焦点:对于处于焦点的Activity,通过mFocusInputChannel变量获取应用进程及其主线程30,将Down类型的触屏消息转给对应的主线程30进行处理。如果点击的是非焦点的Activity,则设置所述mDragStatus变量为true,以便进行后续的拖动处理,直到接收到Up消息或者下一个Down消息后,将该mDragStatus变量设为false,标识拖动操作结束。拖动相关处理由活动管理服务组件20来完成。
活动管理服务组件20收到该事件后,要进行焦点切换,需要通知先前处于焦点的Activity所处的应用进程和主线程30,进行失去焦点的操作,包括向窗口管理服务组件10解注册触屏消息处理通道,以便新获得焦点的Activity能够向窗口管理服务组件10注册触屏消息处理通道。当新的Activity获得焦点后,刷新整个显示界面,向窗口管理服务组件10注册触屏消息处理通道,以便新的Activity能够接收到触屏消息;由于Activity的焦点信息变了,还需要通知窗口管理服务组件10对mDisplayActivityList列表中的相关状态信息进行更新,以便InputManager能够正确对触屏消息进行处理。
如图4所示,Move消息处理流程中,InputManager通过触屏消息的坐标点,遍历mDisplayActivityList列表,获取点击的Activity。判断mDragStatus变量的状态:
如果先前的Down消息是点击在非焦点的Activity上,则会设置mDragStatus变量为true,标识进行拖动处理流程。因此,当判断mDragStatus变量为true时,后续的Move消息都会转给活动管理服务组件20进行拖动处理。活动管理服务组件20收到该请求后,根据Move消息的坐标点更新对应活动管理服务组件20的显示坐标,通知Activity对应应用进程的主线程30进行显示屏幕刷新操作。由于显示在屏幕上的Activity坐标发生了变化,需要通知窗口管理服务组件10更新mDisplayActivityList列表中的显示坐标信息,以便InputManager能够正确的定位坐标对应的Activity。
对于mDragStatus变量为false的情况,如果点击的Activity没有处于焦点,则不进行处理。如果点击的Activity处于焦点,则通过mFocusInputChannel变量获取应用进程及其主线程30后,将Move消息转给对应应用进程的主线程30进行处理。
如图5所示,Up消息处理流程中,InputManager通过触屏消息的坐标点,遍历mDisplayActivityList列表,获取点击的Activity。判断mDragStatus变量的状态:
如果判断mDragStatus变量为true,表示该触屏消息处于拖动处理状态下,则设置该mDragStatus变量为false,标识拖动处理结束。如果判断不处于拖动状态中,则判断坐标点所处的Activity是否处于焦点中,对于非焦点的Activity,则不进行任何处理。如果是点击在处于焦点的Activity中,则通过mFocusInputChannel变量获取应用进程及其主线程30后,将Up消息转给对应应用进程的主线程30进行处理。
综上所述,本发明提供的多活动触屏消息控制方法及系统,在有多个活动显示在触摸屏上时,如果触摸位置处在获得焦点的活动的显示区域内,则将触屏消息转给处于焦点的活动进行处理;如果触摸位置处在没有获得焦点的活动的显示区域,则控制该活动获得焦点,并可以进行后续处理。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (10)
1.一种多活动触屏消息控制方法,其特征在于,
同时显示在触摸屏上的多个活动,包含在初始时获得焦点的第一活动,和在初始时失去焦点的第二活动;
在触摸屏上收到触屏消息时,窗口管理服务组件(10)对触摸点在触摸屏上的位置进行判断:若触摸点处在第一活动的显示区域内,将触屏消息转给获得焦点的第一活动进行后续处理;若触摸点处在第二活动的显示区域内,则进行焦点切换使第二活动获得焦点后,将触屏消息转给切换后获得焦点的第二活动进行后续处理;
其中,在进行焦点切换时,活动管理服务组件(20)与第一活动所属应用的第一主线程交互,由该第一主线程进行使第一活动失去焦点的操作来向窗口管理服务组件(10)解注册触屏消息处理通道;活动管理服务组件(20)还与第二活动所属应用的第二主线程交互,由该第二主线程进行使第二活动获得焦点的操作来向窗口管理服务组件(10)注册触屏消息处理通道,以便获取触屏消息进行后续处理。
2.如权利要求1所述的多活动触屏消息控制方法,其特征在于,
所述触屏消息包含下操作消息、移动消息、上操作消息;
若下操作消息的触摸点,处在失去焦点的活动的显示区域时,进行焦点切换,并刷新整个显示界面;
若移动消息的触摸点,处在失去焦点的活动的显示区域时,活动管理服务组件(20)根据窗口管理服务组件(10)的请求进行拖动处理来改变触摸点所在活动的显示区域的位置,并通知触摸点所在活动的主线程(30)刷新该活动的显示;
若上操作消息的触摸点,处在失去焦点的活动的显示区域时,结束拖动处理,完成对触屏消息的处理。
3.如权利要求2所述的多活动触屏消息控制方法,其特征在于,
所述窗口管理服务组件(10)收到触屏消息时,以及主线程(30)对触屏消息进行处理时,分别对触屏消息进行有效性检查;
当收到触屏信息中的移动消息或上操作消息之前,先收到过所述下操作消息时,判断收到的触屏消息是有效的,否则判断收到的触屏信息是无效的;
有效性检查之后,初始时或切换后获得焦点的活动的主线程(30)对有效的触屏信息进行处理;无效的触屏消息被丢弃而不再处理。
4.如权利要求1或2或3所述的多活动触屏消息控制方法,其特征在于,
所述活动管理服务组件(20)向窗口管理服务组件(10)配置所有显示在触摸屏上的活动的相关信息,包括各活动的显示区域及焦点状态;窗口管理服务组件(10)将活动的相关信息进行保存;
活动的显示区域和/或焦点状态发生任意变化时,所述活动管理服务组件(20)都对活动的相关信息进行更新,并通知窗口管理服务组件(10)对所保存的活动的相关信息进行更新。
5.如权利要求4所述的多活动触屏消息控制方法,其特征在于,
收到触屏信息时,对其类型进行判断:
当收到的是下操作消息时,所述窗口管理服务组件(10)将开始句柄变量设为真,以标识一个完整的触屏消息处理流程开始,并进入下操作消息处理流程;
当收到的不是下操作消息后,进一步判断所述开始句柄变量是否为真:
所述开始句柄变量为假时,判断触屏消息无效而不做处理;
所述开始句柄变量为真且判断收到的是有效的移动消息时,进入移动消息处理流程;所述开始句柄变量为真且判断收到的是有效的上操作消息时,进入上操作消息处理流程,之后设置所述开始句柄变量为假,以标识一个完整的触屏消息流程结束。
6.如权利要求5所述的多活动触屏消息控制方法,其特征在于,
所述下操作消息处理流程中,先将原先为真的拖动状态变量设为假;
由所述窗口管理服务组件(10)包含的输入管理器根据触屏消息的触摸点的位置,对窗口管理服务组件(10)中保存所有显示的活动的相关信息的列表进行遍历,从中查找到触摸点所在的活动并判断该活动的焦点状态:
若触摸点所在活动获得焦点时,输入管理器通过焦点输入通道变量获取该活动所属应用及其主线程(30),将下操作消息转给该主线程(30)进行处理;
若触摸点所在活动失去焦点时,设置所述拖动状态变量为真,标识进入拖动处理状态,转由所述活动管理服务组件(20)进行拖动处理。
7.如权利要求6所述的多活动触屏消息控制方法,其特征在于,
所述移动消息处理流程中,所述输入管理器根据触屏消息的触摸点的位置,遍历所述列表来查找触摸点所在的活动,判断该活动的焦点状态,并判断拖动状态变量的状态:
若拖动状态变量为真时,转由所述活动管理服务组件(20)进行拖动处理;
若拖动状态变量为假且触摸点所在活动失去焦点时,不做处理;
若拖动状态变量为假且触摸点所在活动获得焦点时,所述输入管理器通过所述焦点输入通道变量获取该活动所属应用及其主线程(30),并将移动消息转给该主线程(30)进行处理。
8.如权利要求6所述的多活动触屏消息控制方法,其特征在于,
所述上操作消息处理流程中,输入管理器根据触屏消息的触摸点的位置,遍历所述列表来查找触摸点所在的活动,判断该活动的焦点状态,并判断拖动状态变量的状态:
若拖动状态变量为真时,设置该拖动状态变量为假,以标识拖动处理结束;
若拖动状态变量为假且触摸点所在活动失去焦点时,不做处理;
若拖动状态变量为假且触摸点所在活动获得焦点时,所述输入管理器通过所述焦点输入通道变量获取该活动所属应用及其主线程(30),并将上操作消息转给该主线程(30)进行处理。
9.如权利要求6所述的多活动触屏消息控制方法,其特征在于,
所述输入管理器包含输入读取线程和输入调度线程:
其中,所述输入读取线程对底层的触屏消息进行监控,并将读取到的触屏消息转交给所述输入调度线程进行后续处理。
10.一种多活动触屏消息控制的系统,其特征在于,包含:
窗口管理服务组件(10),其负责窗口管理,对底层的触屏消息进行监控和管理;
主线程(30),负责对其所在应用内部的活动进行管理;所述主线程(30)接收所述窗口管理服务组件(10)发送的触屏消息,派发给对应的活动及所属的显示组件进行触屏消息的处理;
活动管理服务组件(20),负责对包含触摸屏上所有显示的活动的堆栈进行管理,并向所述窗口管理服务组件(10)提供所有显示的活动的相关信息及其更新的情况;
所述活动管理服务组件(20)与各活动所属应用的主线程(30)进行交互,控制焦点切换流程,使初始获得焦点的活动对应的主线程(30)向窗口管理服务组件(10)解注册触屏消息处理通道使初始获得焦点的活动失去焦点,而使初始失去焦点的活动对应的主线程(30)向窗口管理服务组件(10)注册触屏消息处理通道使初始失去焦点的活动在切换后获得焦点;
所述活动管理服务组件(20)根据窗口管理服务组件(10)的请求进行拖动处理,以改变触摸点所在活动的显示区域的位置,并通知触摸点所在活动对应的主线程(30)刷新该活动的显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410731169.4A CN104391649A (zh) | 2014-12-05 | 2014-12-05 | 一种多活动触屏消息控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410731169.4A CN104391649A (zh) | 2014-12-05 | 2014-12-05 | 一种多活动触屏消息控制方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104391649A true CN104391649A (zh) | 2015-03-04 |
Family
ID=52609560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410731169.4A Pending CN104391649A (zh) | 2014-12-05 | 2014-12-05 | 一种多活动触屏消息控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391649A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699537A (zh) * | 2015-03-18 | 2015-06-10 | 北京奇虎科技有限公司 | 程序控制方法与活动组件调度方法及其相应的装置 |
CN105487934A (zh) * | 2015-11-30 | 2016-04-13 | 上海斐讯数据通信技术有限公司 | 安卓系统的触屏消息处理方法及系统 |
CN106990908A (zh) * | 2017-04-06 | 2017-07-28 | 广州视源电子科技股份有限公司 | 一种局部触摸屏蔽方法、装置、系统、设备及存储介质 |
CN107506200A (zh) * | 2017-09-12 | 2017-12-22 | 深圳市金立通信设备有限公司 | 一种屏幕内容切换方法、终端及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214060A (zh) * | 2010-04-12 | 2011-10-12 | 宏碁股份有限公司 | 触控式电子装置及其窗口操控方法 |
CN103176794A (zh) * | 2013-01-31 | 2013-06-26 | 北京恒华伟业科技股份有限公司 | Android屏幕触点轨迹数据的组织及解析方法 |
CN103797460A (zh) * | 2011-04-28 | 2014-05-14 | Inq企业有限公司 | 电子装置中的应用控制 |
CN103809845A (zh) * | 2012-11-13 | 2014-05-21 | 上海斐讯数据通信技术有限公司 | 一种支持多应用显示的移动终端及多应用显示方法 |
CN103902363A (zh) * | 2012-12-18 | 2014-07-02 | 上海鼎为电子科技(集团)有限公司 | 一种支持多任务切换的电子装置和切换方法 |
-
2014
- 2014-12-05 CN CN201410731169.4A patent/CN104391649A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214060A (zh) * | 2010-04-12 | 2011-10-12 | 宏碁股份有限公司 | 触控式电子装置及其窗口操控方法 |
CN103797460A (zh) * | 2011-04-28 | 2014-05-14 | Inq企业有限公司 | 电子装置中的应用控制 |
CN103809845A (zh) * | 2012-11-13 | 2014-05-21 | 上海斐讯数据通信技术有限公司 | 一种支持多应用显示的移动终端及多应用显示方法 |
CN103902363A (zh) * | 2012-12-18 | 2014-07-02 | 上海鼎为电子科技(集团)有限公司 | 一种支持多任务切换的电子装置和切换方法 |
CN103176794A (zh) * | 2013-01-31 | 2013-06-26 | 北京恒华伟业科技股份有限公司 | Android屏幕触点轨迹数据的组织及解析方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699537A (zh) * | 2015-03-18 | 2015-06-10 | 北京奇虎科技有限公司 | 程序控制方法与活动组件调度方法及其相应的装置 |
CN105487934A (zh) * | 2015-11-30 | 2016-04-13 | 上海斐讯数据通信技术有限公司 | 安卓系统的触屏消息处理方法及系统 |
CN106990908A (zh) * | 2017-04-06 | 2017-07-28 | 广州视源电子科技股份有限公司 | 一种局部触摸屏蔽方法、装置、系统、设备及存储介质 |
CN106990908B (zh) * | 2017-04-06 | 2020-06-16 | 广州视源电子科技股份有限公司 | 一种局部触摸屏蔽方法、装置、系统、设备及存储介质 |
CN107506200A (zh) * | 2017-09-12 | 2017-12-22 | 深圳市金立通信设备有限公司 | 一种屏幕内容切换方法、终端及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11659098B2 (en) | Information reminding method and apparatus, and electronic terminal | |
CN104391649A (zh) | 一种多活动触屏消息控制方法及系统 | |
US10437442B2 (en) | Method, apparatus, and terminal for processing notification information | |
US10496151B2 (en) | Method and apparatus for controlling display of electronic device | |
US10455542B2 (en) | Method of synchronizing notification messages for electronic devices and electronic devices | |
US20170053129A1 (en) | Method and apparatus for managing application data usage | |
CN103605524A (zh) | 一种在移动终端分屏运行程序的方法及装置 | |
CN103513874B (zh) | 信息显示的方法及装置 | |
US20160105389A1 (en) | Method, server and electronic devices of synchronizing notification messages for electronic devices | |
EP3651007B1 (en) | Method, apparatus, and device for enabling task management interface | |
CN112269508B (zh) | 显示方法、装置和电子设备 | |
US11287948B2 (en) | Method for controlling the execution of a program configurable into a disabled state and enabled state | |
CN112817515B (zh) | 数据展示方法、装置、电子设备及存储介质 | |
US10599214B2 (en) | Systems and methods for gaze input based dismissal of information on a display | |
CN104025002A (zh) | 被终止的应用在返回堆栈内的保持 | |
CN113794795B (zh) | 信息共享方法、装置、电子设备及可读存储介质 | |
CN113703627A (zh) | 显示方法、装置、电子设备及可读存储介质 | |
CN112286612A (zh) | 信息显示方法、装置及电子设备 | |
CN113360037B (zh) | 应用程序使用时长的设置方法及装置 | |
CN103577255A (zh) | 一种基于Zookeeper的多服务间异步进度控制的方法及系统 | |
EP2801916A1 (en) | Configuration method and system for sharing input device among equipments | |
CN108121261B (zh) | 用于显示监视屏的方法 | |
JP5970644B2 (ja) | 広告の配信状況を広告主の制御サーバから制御するプログラム | |
CN115202524B (zh) | 显示方法和装置 | |
US20200036770A1 (en) | Techniques for improving implementation of a remote browser within a local browser |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150304 |