一种应用于Android平台的处理事件的方法和装置制造方法

文档序号:6517559阅读:119来源:国知局
一种应用于Android平台的处理事件的方法和装置制造方法
【专利摘要】本发明涉及通信【技术领域】,尤其涉及一种应用于Android平台的处理事件的方法和装置,用以解决现有的Android终端上无法同时运行多个应用的问题。本发明公开的在Android平台上应用于Android平台的处理事件的方法包括:在活动Activity脱离活动状态时,Activity管理层中的下层在确定该Activity需要持续运行时对该Activity屏蔽Activity管理层中的上层发给该Activity的、用于使该Activity脱离活动状态的事件。该方法中,通过屏蔽使Activity脱离活动状态的事件,使得该Activity可以持续运行,同时由于该Activity脱离活动状态,使得其他Activity得以进入活动状态,则同一时间有多个Activity可以运行,从而可以同时运行多个应用。
【专利说明】—种应用于Android平台的处理事件的方法和装置
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种应用于Android平台的处理事件的方法和装置。
【背景技术】
[0002]Android平台在国际上应用广泛,目前,在采用Android平台的终端上(以下简称“Android终端”),通常同一时间只能有一个应用能够正常运行,处于正常使用状态(S卩:活动状态),其他应用都处于停止状态,不能正常运行。
[0003]比如:在Android终端上运行媒体播放器播放视频时,此时若打开网页,则网页浏览的应用处于活动状态,媒体播放器将停止播放。
[0004]综上,目前还没有一种通用的机制,能够使Android终端上的多个应用同时正常运行。

【发明内容】

[0005]本发明实施例提供一种应用于Android平台的处理事件的方法和装置,用以实现在Android终端上多个应用同时正常运行。
[0006]本发明实施例提供一种应用于Android平台的处理事件的方法,包括:
[0007]在活动Activity脱离活动状态时,Activity管理层中的下层确定该Activity是否需要持续运行;
[0008]若确定需要持续运行,Activity管理层中的下层对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
[0009]该方案中,通过屏蔽使Activity脱离活动状态的第一事件,使得该Activity可以持续运行,同时由于该Activity脱离活动状态,使得其他Activity得以进入活动状态,则同一时间有多个Activity可以运行,每个Activity所属的应用得以持续运行,从而可以同时运行多个应用。
[0010]较佳地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第一事件包括:用于使该Activity暂停的事件;或
[0011]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第一事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0012]该优选方案分别给出了使得进入暂停状态和进入停止状态的Activity继续正常运行的方案。
[0013]较佳地,所述Activity管理层中的下层对该Activity屏蔽所述第一事件之后,该方法还包括:
[0014]在该Activity返回活动状态时,Activity管理层中的下层对该Activity屏蔽用于使该Activity返回活动状态的第二事件;[0015]其中,所述第二事件是Activity管理层中的上层向该Activity发送的。
[0016]对于以持续运行方式运行的Activity,该优选方案给出了当该Activity对应的使该Activity返回活动状态的事件发生时的处理方案。
[0017]较佳地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第二事件包括:用于使该Activity开始的事件;或
[0018]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第二事件包括:用于使该Activity重新开始的事件、用于使该Activity预备开始的事件和用于使该Activity开始的事件。
[0019]对于以持续运行方式运行的Activity,该优选方案分别给出了当该Activity处于暂停状态和处于停止状态时,对于使该Activity返回活动状态的事件的处理方案。
[0020]较佳地,所述Activity管理层中的下层对该Activity屏蔽所述第一事件之后,所述方法还包括:
[0021]在需要关闭该Activity时,Activity管理层中的下层向该Activity发送用于使该Activity预备关闭的第三事件。
[0022]该优选方案给出了关闭以持续运行方式运行的Activity的方案。
[0023]较佳地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第三事件包括:用于使该Activity暂停的事件;或
[0024]所述Activity脱离活动状态为:该Activity脱离活动状态,进入停止状态,所述第三事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0025]对于以持续运行方式运行的Activity,该优选方案分别给出了当该Activity处于暂停状态和处于停止状态时,关闭该Activity的方案。
[0026]较佳地,所述Activity管理层中的下层确定该Activity是否需要持续运行,包括:
[0027]在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,Activity管理层中的下层确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
[0028]该优选方案给出了如何确定Activity需要持续运行的方案。
[0029]较佳地,所述Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用,包括:
[0030]在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用;
[0031]其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
[0032]该优选方案给出了确定Activity所属的应用为需要持续运行的应用的方案。
[0033]较佳地,该方法还包括:
[0034]在收到将指定应用置为需要持续运行的应用的设置指令后,或在启动指定应用时确定该指定应用为预设的需要持续运行的应用后,Activity管理层中的下层生成该指定应用对应的所述数据元素,并将该生成的数据元素加入所述第二线性数据结构体中。
[0035]该优选方案提供了一种灵活设置需要持续运行的应用的方案。
[0036]较佳地,该方法还包括:
[0037]在收到取消指定应用持续运行方式的取消设置指令后,Activity管理层中的下层将该指定应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0038]该优选方案提供了一种灵活取消需要持续运行的应用的方案。
[0039]较佳地,该方法还包括:
[0040]若确定需要关闭的Activity为需要持续运行的Activity,且该Activity为所述第一线性数据结构体中、该Activity所属的应用唯一的Activity,则Activity管理层中的下层将该Activity所属应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0041]采用该优选方案,能够保证用于记录需要持续运行的应用的线性数据结构体的数据准确性。能有效避免在需要持续运行的应用的各Activity都关闭的情况下,第二线性数据结构体中还记录该需要持续运行的应用的情况。
[0042]较佳地,在收到将显示界面切换给指定的需要持续运行的应用的切换指令后,Activity管理层中的下层将该指定应用对应的所述数据元素置为所述第二线性数据结构体的第一个所述数据元素。
[0043]该优选方式给出了将显示界面切换给指定的需要持续运行的应用的方案。
[0044]较佳地,在收到调整需要持续运行的应用顺序的调整指令后,Activity管理层中的下层按照所述调整指令指定的顺序调整第二线性数据结构体中各所述数据元素的先后顺序。
[0045]该优选方案给出了调整需要持续运行的应用顺序的方案。
[0046]本发明实施例还提供一种应用于Android平台的处理事件的装置,包括:
[0047]处理模块,用于在活动Activity脱离活动状态时,确定该Activity是否需要持续运行;
[0048]屏蔽模块,用于在所述处理模块确定需要持续运行时,对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
[0049]该方案中,通过屏蔽使Activity脱离活动状态的事件,使得该Activity可以持续运行,同时由于该Activity脱离活动状态,使得其他Activity得以进入活动状态,则同一时间有多个Activity可以运行,每个Activity所属的应用得以持续运行,从而可以同时运行多个应用。
[0050]较佳地,所述处理模块具体用于:
[0051]在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
[0052]该优选方案给出了如何确定Activity需要持续运行的方案。
[0053]较佳地,所述处理模块具体用于:
[0054]在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,确定该Activity所属的应用为需要持续运行的应用;[0055]其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
[0056]该优选方案给出了确定Activity所属的应用为需要持续运行的应用的方案。
【专利附图】

【附图说明】
[0057]图1为本发明实施例中Activity从启动到关闭的流程示意图;
[0058]图2为本发明实施例提供的应用于Android平台的处理事件的方法过程示意图;
[0059]图3为本发明实施例提供的设置标记skipFlag的方法过程示意图;
[0060]图4为本发明实施例提供的关闭Activity的方法过程示意图;
[0061]图5为historyRecord队列的不意图;
[0062]图6为本发明实施例提供的处理用于使Activity脱离活动状态的事件的方法过程不意图;
[0063]图7为本发明实施例提供的向contRecord队列中添加持续运行对象conlnfo的方法过程示意图;
[0064]图8为本发明实施例提供的关闭Activity的处理方法的过程示意图;
[0065]图9为本发明实施例提供的需要持续运行的应用间切换的切换流程示意图;
[0066]图10为本发明实施例提供的应用于Android平台的处理事件的装置结构示意图;
[0067]图11为本发明实施例提供的Android终端的装置结构示意图。
【具体实施方式】
[0068]本发明实施例提供一种应用于Android平台的处理事件的方法和装置。在本发明实施例提供的方法中,在活动(Activity)脱离活动状态时,Activity管理层中的下层确定该Activity是否需要持续运行;若确定需要持续运行,则Activity管理层中的下层对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,第一事件是Activity管理层中的上层向该Activity发送的。通过屏蔽使Activity脱离活动状态的事件,使得该Activity可以持续运行,同时由于该Activity脱离活动状态,使得其他Activity得以进入活动状态,则同一时间有多个Activity可以运行,每个Activity所属的应用得以持续运行,从而可以同时运行多个应用。
[0069]在本发明实施例中,以Android平台的处理为例进行说明,但并不意味着本发明的方法仅适用于Android平台。实际上,对于任何存在无法同时运行多个应用的用户终端平台,只要能通过屏蔽事件而使得应用得以持续运行,则本发明实施例提供的方法也适用于该类用户终端平台。
[0070]本发明实施例中,各Activity从启动到关闭的整个过程中,其状态可包括:活动状态、暂停状态、停止状态和非活动状态。当Activity对应的用户界面处于各用户界面最上层(即来到前台)时,其完全能被用户看到,能够与用户进行交互,此时该Activity处于活动状态。当Activity脱离活动状态时,即进入暂停状态、停止状态或非活动状态;Activity也可以从暂停状态、停止状态或非活动状态上述状态中的一种进入活动状态。
[0071]在Android平台中,Activity管理层负责对Activity的事件进行处理。一个Activity从启动到关闭的流程如图1所示。其中,onCreate事件为用于创建Activity的事件、onStart事件为用于使Activity预备开始的事件、onResume事件为用于使Activity开始的事件、onRestart事件为用于使Activity重新开始的事件,onPause事件为用于使Activity暂停的事件、onStop事件为用于使Activity停止的事件、onDestroy事件为用于关闭Activity的事件。当一个Activity变为活动状态时,对应的事件为onRestart事件、onStart事件和onResume事件或仅为onResume事件;当一个Activity脱离活动状态时,对应的事件是onPause事件和onStop事件或仅为onPause事件。通过Activity管理层对Activity的事件进行处理,实现Activity的状态转换。
[0072]图2为本发明实施例提供的应用于Android平台的处理事件的方法过程的示意图,如图2所示,该方法包括以下步骤:
[0073]S201:在活动Activity脱离活动状态时,Activity管理层中的下层确定该Activity是否需要持续运行;
[0074]S202:若确定需要持续运行,则Activity管理层中的下层对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,第一事件是由Activity管理层中的上层向该Activity发送的。
[0075]在本发明实施例提供的方法中,Activity管理层包括:Activity管理层中的上层和Activity管理层中的下层。Android平台中,当有Activity对应的事件产生时,由Activity管理层中的上层发给Activity管理层中的下层,再由Activity管理层中的下层发给Activity进行处理。
[0076]在本发明实施例中,Activity管理层中的下层在Activity脱离活动状态时,若确定该Activity需要持续运行,则对该Activity屏蔽第一事件(即Activity管理层中的下层在收到使Activity脱离活动状态的事件后,不向Activity发送),这样,Activity就不会对使该Activity脱离活动状态的事件进行处理,得以继续正常运行,进而该Activity所属的应用也会继续正常运行。
[0077]本发明实施例提供的方法中,根据Activity对应的事件的处理过程,对Activity管理层进行分层,将向各应用提供接口的部分作为Activity管理层中的上层,将能够实现向Activity屏蔽Activity事件的部分作为Activity管理层中的下层,从而从功能上实现了对Activity管理层的分层。需要说明的是,这里虽然提及Activity管理层中的上层和Activity管理层中的下层,但不意味着Activity管理层仅包括Activity管理层中的上层和Activity管理层中的下层,其还可包括用于实现其他功能的层或模块,只是与本发明实施例提供的方法无关,所以这里无需提及。
[0078]较佳地,Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;第一事件包括:用于使该Activity暂停的事件(如图1所示的onPause事件);或
[0079]Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;第一事件包括:用于使该Activity暂停的事件(如图1所示的onPause事件)和用于使该Activity停止的事件(如图1所示的onStop事件)。
[0080]需要说明的是,对于目前的Android平台,一个Activity由停止状态返回活动状态时,Activity管理层中的上层要向该Activity发送两个事件,即:使该Activity暂停的事件和使该Activity停止的事件,因此,本发明实施例提供的优选方案中,在该Activity脱离活动状态,并进入停止状态时,屏蔽了上述两个事件。但随着技术的发展,以后的Android平台或其他平台中,当Activity由活动状态进入停止状态时,可能Activity管理层中的上层仅向该Activity发送使该Activity停止的事件,则在此情况下,可仅屏蔽使Activity进入停止状态的事件即可。无论技术如何发展,只要在Activity活动状态时,若确定该Activity需要持续运行,能够屏蔽用于使该Activity脱离活动状态的事件,即可使该Activity得以持续运行。
[0081]较佳地,如图2所示,在步骤S202之后,本发明实施例提供的方法还包括:
[0082]S203 =Activity管理层中的下层确定该Activity返回活动状态;
[0083]S204:Activity管理层中的下层对该Activity屏蔽用于使该Activity返回活动状态的第二事件,其中,第二事件是由Activity管理层中的上层向该Activity发送的。
[0084]Activity管理层中的下层屏蔽第一事件后,由于Activity管理层中的上层并不知道屏蔽了第一事件,所以当Activity返回活动状态时,Activity管理层中的上层还是会向Activity发送用于使该Activity返回活动状态的第二事件,Activity管理层中的下层在收到用于使该Activity返回活动状态的事件时,确定该Activity要返回活动状态,此时,可选地,Activity管理层中的下层屏蔽第二事件(即Activity管理层中的下层不向Activity发送该事件)。
[0085]较佳地,步骤S201中,Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;步骤S204中,第二事件包括用于使该Activity开始的事件(如图1所示的onResume 事件);或
[0086]步骤S201中,Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;步骤S204中,第二事件包括:用于使该Activity重新开始的事件(如图1所示的onRestart事件)、用于使该Activity预备开始的事件(如图1所示的onStart事件)和用于使该Activity开始的事件(如图1所示的onResume事件)。
[0087]需要说明的是,对于目前的Android平台,要使一个Activity由活动状态进入停止状态时,Activity管理层中的上层要向该Activity发送三个事件,即:用于使该Activity重新开始的事件、用于使该Activity预备开始的事件和用于使该Activity开始的事件。因此,本发明实施例提供的优选方案中,在该Activity由停止状态返回活动状态时,屏蔽了上述三个事件。但随着技术的发展,以后的Android平台或其他平台中,当Activity由停止状态返回活动状态时,可能Activity管理层中的上层仅向该Activity发送使该Activity重新开始的事件(或其他事件,只要能使该Activity返回活动状态即可),则在此情况下,可仅屏蔽使Activity重新开始的事件即可。无论技术如何发展,只要在Activity要返回活动状态时,能够屏蔽用于使该Activity返回活动状态的事件即可。
[0088]较佳地,在步骤S202之后,本发明实施例提供的方法还包括:
[0089]S205:Activity管理层中的下层确定需要关闭该Activity ;
[0090]S206:Activity管理层中的下层向该Activity发送用于使该Activity预备关闭的第三事件。
[0091]步骤S205中,当Activity管理层中的下层收到Activity管理层中的上层向该Activity发送的、用于关闭该Activity的事件时,确定需要关闭该Activity,即使该Activity进入非活动状态。在Android平台中,如图1所示,一个Activity由活动状态进入非活动状态需要接收onPause事件、onStop事件和onDestroy事件并进行处理,由于之前Activity管理层上层发给该Activity的用于使该Activity脱离活动状态的事件被Activity管理层中的下层屏蔽了,而Activity管理层又不会重新发送,因此当需要关闭该Activity时,需要向Activity补发被屏蔽的使该Activity脱离活动状态的事件,本发明实施例中,由Activity管理层中的下层产生用于使该Activity预备关闭的事件,并发给该Activity。
[0092]较佳地,步骤S201中,Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;步骤S206中,第三事件包括:用于使该Activity暂停的事件(如图1中的onPause事件);或
[0093]步骤S201中,Activity脱离活动状态为:该Activity脱离活动状态,进入停止状态;步骤S206中,第三事件包括:用于使该Activity暂停的事件(如图1中的onPause事件)和用于使该Activity停止的事件(如图1中的onStop事件)。
[0094]需要说明的是,对于目前的Android平台,要关闭一个处于活动状态的Activity,Activity管理层中的上层要向该Activity发送三个事件,即:用于使该Activity暂停的事件和、用于使该Activity停止的事件和用于关闭该Activity的事件。因此,本发明实施例提供的优选方案中,在确定要关闭该Activity,向该Activity发送使该Activity预备关闭的事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。但随着技术的发展,以后的Android平台或其他平台中,为了使该Activity预备关闭,可能Activity管理层中的上层仅向该Activity发送用于使该Activity停止的事件,贝U在此情况下,Activity管理层中的下层可仅向该Activity发送用于使该Activity停止的事件即可。无论技术如何发展,只要在要关闭Activity时,能够发送使该Activity预备关闭的事件即可。
[0095]在步骤S206, Activity管理层中的下层向该Activity发送用于使该Activity预备关闭的事件后,Activity管理层中的下层再将Activity管理层中的上层的用于关闭Activity的事件(如图1中的onDestroy事件)发给该Activity进行处理。
[0096]较佳地,考虑到Activity第一次启动变为活动状态时会产生用于使该Activity预备开始的事件(如图1中的onStart事件)和用于使该Activity开始的事件(如图1中的onResume事件),为了保证该Activity的正常显示和运行,这次的这两个事件不能屏蔽。
[0097]可选地,Activity管理层中的下层可为每个Activity设置一个标记skipFlag,Activity管理层中的下层通过判断标记skipFlag的值,来确定是否需要屏蔽事件。具体方法如下:对于每个Activity,在该Activity第一次启动时,设置该Activity对应的skipFlag值为假;当屏蔽该Activity的用于使该Activity脱离活动状态的事件时,设置该Activity对应的skipFlag值为真;当有用于使该Activity返回活动状态的事件发生时,设置该Activity对应的skipFlag值为假。这样,当有用于使该Activity预备开始的事件或使该Activity开始的事件发生时,如果该Activity对应的skipFlag值为真,则忽略不处理这两个事件,并设置该Activity对应的skipFlag为假,具体处理过程如图3所示。当有onDestroy事件发生,即需要关闭该Activity时,如果此标志为真,则Activity管理层中的下层向该Activity发送用于使该Activity预备关闭的事件。具体处理流程如图4所示。[0098]上面,重点描述了 Activity管理层中的下层屏蔽Activity事件,使得Activity得以持续运行的方法,以及产生Activity事件,使得Activity得以正常关闭的方法等。下面,重点描述步骤S201中,Activity管理层中的下层是如何确定该Activity需要持续运行的。
[0099]在Android平台中,一个Android应用由一个或多个Activity组成,每一个Activity负责一个显示界面的显示和处理。对于每一个应用,当该应用启动后,该应用的Activity被置于第一线性数据结构体中(当第一线性数据结构体的实现方式为队列时,我们称之为historyRecord队列)中。historyRecord队列中的Activity按照打开的先后顺序排列,队列最前面的Activity为最近打开的,为处于活动状态的Activity,包括此Activity的应用为当前正在使用的应用,即处于活动状态的应用。historyRecord队列中包括所有处于活动状态、暂停状态或停止状态的Activity,当一个Activity进入非活动状态时,其被从historyRecord队列中删除。
[0100]historyRecord队列的一个示例如图5所示。在图5中,应用I包括Activity A和Activity C,应用2包括Activity B和Activity D。Activity A为当前处于活动状态的Activity,可以正常运行,Activity B、Activity C、Activity D处于暂停状态或停止状态,相应地,应用I处于活动状态,应用2处于暂停状态或停止状态。每一个Activity运行的时候都会有一个叫包名(packageFlg)的标志,用于标识Activity所属的应用,对于一个应用的各Activity,其packageFlg相同。historyRecord队列会记录每个Activity的packageFlg。
[0101]在本发明实施例提供的方法中,为应用提供一种特殊的运行方式,称为“持续运行方式”,以持续运行方式运行的应用即使处于暂停状态或停止状态也会持续运行。本发明实施例中,需要以持续运行方式运行的应用,称之为“需要持续运行的应用”。一个应用是否为需要持续运行的应用,可由用户预先设定。
[0102]由此,步骤S201可包括:
[0103]在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,Activity管理层中的下层确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
[0104]第一线性数据结构体的实现方式不限于图5所示的historyRecord队列,只要是具有线性数据结构,结构体内的数据元素有先后顺序即可。比如,若第一线性数据体为堆栈,则该堆栈中处于栈顶的Activity为当前处于活动状态的Activity ;若第一线性数据体为队列,则该队列中处于最前面的Activity为当前处于活动状态的Activity。
[0105]如图5所示,若应用2为需要持续运行的应用,则Activity管理层中的下层确定位于historyRecord队列最前面的Activity B需要持续运行。此时,除了应用I的ActivityA能够正常运行外,应用2的Activity B也能够正常运行,即实现了应用I和应用2同时正常运行。
[0106]较佳地,步骤S201中,Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用,包括:
[0107]在用于记录需要持续运行的应用的第二线性数据结构体中记录的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用;
[0108]其中,该特定标识用于标识该Activity所属的应用。
[0109]这里,第二线性数据结构体的实现方式包括但不限于:队列、堆栈、链表等。只要是具有线性数据结构,结构体内的数据元素有先后顺序即可。比如,第二线性数据结构体为队列,这里我们称之为“持续运行应用管理contRecord队列”,其负责管理当前所有的需要持续运行的应用。contRecord的每一个数据元素(比如,每一个数据元素为一个对象,这里我们称之为持续运行应用对象contlnfo)对应一个需要持续运行的应用,contRecord队列不仅记录各个以持续运行方式运行的应用,还记录每个应用的各Activity对应的特定标识,这里特定标识为该Activity对应的packageFlg。
[0110]在Activity脱离活动状态时,Activity管理层中的下层确定在contRecord队列中是否存在满足下述条件的contlnfo对象:其对应的packageFlg与该Activity的packageFlg相同。若满足上述条件,则Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用。
[0111]一个应用可能包括多个Activity,若该应用为需要持续运行的应用,则Activity管理层中的下层在进行屏蔽事件处理时,只需对该应用的、处于historyRecord队列最前面的Activity进行屏蔽处理,即能够使该应用继续正常运行;对于该应用的其他Activity,无需进行屏蔽处理。因此,在Activity管理层中的下层确定该Activity是否需要持续运行时,除了要确定该Activity所属的应用为需要持续运行的应用,可选地,还可以在同时确定该Activity为该应用的、处于historyRecord队列最前面的Activity时,确定该Activity需要持续运行。这样,可减少Activity管理层中的下层的屏蔽处理。具体处理流程如图6所示,该处理包括如下步骤:
[0112]S601:Activity管理层下层确定用于使Activity脱离活动状态的事件发生;
[0113]S602:Activity 管理层下层根据该 Activity 的 packageFlg 在 contRecord 队列中查找contlnfo对象,若找到,执行步骤S603,否则,执行步骤S604 ;
[0114]S603:Activity管理层下层判断该Activity为historyRecord队列中的该Activity所属应用的各Activity中,处于最前面的Activity,若是,则执行步骤S605,否则执行步骤S604 ;
[0115]S604:按普通Activity的处理流程处理;
[0116]S605:Activity管理层下层对该Activity屏蔽用于使该Activity脱离活动状态的事件,可选地,置skipFlag为真。
[0117]较佳地,在收到将指定应用置为需要持续运行的应用的设置指令后,Activity管理层中的下层生成该指定应用对应的数据元素(比如contlnfo对象),并将该生成的数据元素加入第二线性数据结构体中(比如:contRecord队列)。
[0118]contRecord 队列中的每一个 conlnfo 对象都有一个 packageFlg,与该 conlnfo 对象对应的应用的各Activity的packageFlg相同。向contRecord队列中添加持续运行对象conlnfo的过程如图7所示,该过程可包括如下步骤:
[0119]S701:收到将指定应用置为需要持续运行的应用的设置指令,或在启动指定应用时,确定该指定应用为预设的需要持续运行的应用;[0120]S702:为该指定应用创建contlnfo对象,并记录该指定应用对应的packageFlg ;
[0121]S703:查找contRecord队列中是否存在contlnfo对象,其对应的packageFlg与步骤S702中创建的contlnfo对象对应的packageFlg相同,若找到,则执行步骤S704,否贝U,执行步骤S705 ;
[0122]S704:释放创建的contlnfo对象;
[0123]S705:将创建的contlnfo对象添加到contRecord队列中。
[0124]较佳地,在收到取消指定应用的持续运行方式的取消设置指令后,Activity管理层中的下层将该指定应用对应的数据元素(比如contlnfo对象)从第二线性数据结构体(比如:contRecord队列)中删除。
[0125]较佳地,若确定需要关闭的Activity为需要持续运行的Activity,且该Activity所属的应用中仅包括该Activity,则Activity管理层中的下层将该Activity所属应用对应的数据元素(比如:contInfo对象)从第二线性数据结构体(比如:contRecord队列)中删除。
[0126]对于Android平台,当一个应用所有的Activity都关闭了,这个应用也就关闭了,所以对于本发明中的需要持续运行的应用,当该应用的一个Activity要关闭时,判断historyRecord中是否还有该应用包括的其他Activity,若否,则确定需要关闭该应用了,此时,应从第二线性数据结构体中删除该应用对应的数据元素,具体处理流程如图8所示,该过程可包括如下步骤:
[0127]S801:Activity管理层中的下层确定需要关闭Activity ;
[0128]S802:Activity管理层中的下层判断historyRecord队列中是否存在和需要关闭的Activity的packageFlg相同的Activity,若是,则执行步骤S803,否则,执行步骤S804 ;
[0129]S803:不作处理;
[0130]S804:Activity管理层中的下层根据packageFlg搜索contRecord队列中的contlnfo 对象;
[0131]S805:Activity管理层中的下层将搜索到的contlnfo对象从contRecord队列中删除。
[0132]较佳地,在收到将显示界面切换给指定的需要持续运行的应用的切换指令后,Activity管理层中的下层将该指定应用对应的数据元素(比如contlnfo对象)置为第二线性数据结构体(比如:contRecord队列)的第一个数据元素。
[0133]较佳地,在收到调整需要持续运行的应用顺序的调整指令后,Activity管理层中的下层按照该调整指令指定的顺序调整第二线性数据结构体中各数据元素的先后顺序。
[0134]下面,对第二线性数据结构体的上述操作进行详细说明。
[0135]可选地,将该应用置为需要持续运行的应用的设置指令可为:在一个应用处于活动状态(即其显示界面位于前端)时,用户长按预设的菜单键。此时,可弹出提示框,提示用户该应用已被设置为需要持续运行的应用,Activity管理层中的下层生成此应用对应的contlnfo对象,并将该contlnfo对象将加入contRecord队列中。
[0136]可选地,取消指定应用的持续运行方式的取消设置指令可为:用户再次长按上述设置指令中的预设的菜单键,此时,可弹出提示框。提示用户该应用已不再是需要持续运行的应用,Activity管理层中的下层将该应用对应的contlnfo对象从contRecord队列中删除。
[0137]可选地,将显示界面切换给指定的需要持续运行的应用的切換指令可为:用户的屏幕滑动指令。如果ー个持续运行的应用正处于活动状态,即其对应的显示界面位于前端,当用户在屏幕上向左滑动时,将contRecord队列中下ー个contlnfo对象对应的应用切换为活动状态,即将该下ー个应用对应的显示界面切換到前端;当用户在屏幕上向右滑动,将contRecord队列中上ー个contlnfo对象对应的应用切换为活动状态,即将该上一个应用对应的显示界面切換到前端。这样,通过用户在屏幕上的左右滑动可逐个显示需要持续运行的应用。tヒ如,如图9所示,通过用户的操作,从应用I切换到应用2再切换到应用3,最终切回应用I。
[0138]可选地,用户的调整需要持续运行的应用顺序的调整指令,包括:在屏幕上向上滑动和在屏幕上向下滑动。当用户在屏幕上向上滑动时,Activity管理层中的下层将屏幕上显示的当前应用对应的contlnfo对象在contRecord队列中向前排一位;当用户在屏幕上向下滑动时,Activity管理层中的下层将屏幕上显示的当前应用对应的contlnfo对象在contRecord队列中向后排一位。
[0139]基于同一发明构思,本发明实施例中还提供了ー种应用于Android平台的处理事件的装置和ー种Android終端,由于该装置和終端解决问题的原理与本发明实施例的方法相似,因此其实施可以參见方法的实施,重复之处不再赘述。
[0140]图10为本发明实施例提供的应用于Android平台的处理事件的装置,包括:
[0141]处理模块1001,用于在活动Activity脱离活动状态时,确定该Activity是否需要持续运行;
[0142]屏蔽模块1002,用于在所述处理模块1001确定需要持续运行时,对该Activity屏蔽用于使该Activity脱离`活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
[0143]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第一事件包括::用于使该Activity暂停的事件;或
[0144]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第一事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0145]可选地,所述屏蔽模块1002还用于:
[0146]在该Activity返回活动状态时,对该Activity屏蔽用于使该Activity返回活动状态的第二事件;
[0147]其中,所述第二事件是Activity管理层中的上层向该Activity发送的。
[0148]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第二时间包括:用于使该Activity开始的事件;或
[0149]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第二事件包括:用于使该Activity重新开始的事件、用于使该Activity预备开始的事件和用于使该Activity开始的事件。
[0150]可选地,所述屏蔽模块1002还用于:在需要关闭该Activity时,向该Activity发送用于使该Activity预备关闭的第三事件。
[0151]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第三事件包括:用于使该Activity暂停的事件;或
[0152]所述Activity脱离活动状态为:该Activity脱离活动状态,进入停止状态,所述第三事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0153]可选地,所述处理模块1001具体用于:
[0154]在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
[0155]可选地,所述处理模块1001具体用于:
[0156]在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,确定该Activity所属的应用为需要持续运行的应用;
[0157]其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
[0158]可选地,所述处理模块1001还用于:
[0159]在收到将指定应用置为需要持续运行的应用的设置指令后,或在启动指定应用时,确定该指定应用为预设的需要持续运行的应用后,生成该指定应用对应的所述数据元素,并将该生成的所述数据元素加入所述第二线性数据结构体中。
[0160]可选地,所述处理模块1001还用于:
[0161]在收到取消指定应用持续运行方式的取消设置指令后,将该指定应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0162]可选地,所述处理模块1001还用于:
[0163]若确定需要关闭的Activity为需要持续运行的Activity,且该Activity为所述第一线性数据结构体中、该Activity所属的应用唯一的Activity,则将该Activity所属应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0164]可选地,所述处理模块1001还用于:
[0165]在收到将显示界面切换给指定的需要持续运行的应用的切换指令后,将该指定应用对应的所述数据元素置为所述第二线性数据结构体的第一个所述数据元素。
[0166]可选地,所述处理模块1001还用于:
[0167]在收到调整需要持续运行的应用顺序的调整指令后,按照所述调整指令指定的顺序调整第二线性数据结构体中各所述数据元素的先后顺序。
[0168]图11是本发明实施例提供的Android终端的结构示意图。如图11所示,该Android终端包括:
[0169]存储器1101,用于存储活动Activity处理程序;
[0170]处理器1102,通过运行所述存储器1101存储的所述程序,用于在活动Activity脱离活动状态时,确定该Activity是否需要持续运行;若确定需要持续运行,对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
[0171]其中,在图11中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1102代表的一个或多个处理器和存储器1101代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一歩描述。总线接ロ提供接ロ。收发机1103可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的単元。针对不同的用户设备,用户接ロ 1104还可以是能够外接内接需要设备的接ロ,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
[0172]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第一事件包括:用于使该Activity暂停的事件;或
[0173]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第一事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0174]可选地,所述处理器1102还用于:在对该Activity屏蔽所述第一事件之后,该Activity返回活动状态时,对该Activity屏蔽用于使该Activity返回活动状态的第二事件;
[0175]其中,所述第二事件是Activity管理层中的上层向该Activity发送的。
[0176]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第二事件包括:用于使该Activity开始的事件;或
[0177]所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第二事件包括:用于使该Activity重新开始的事件、用于使该Activity预备开始的事件和用于使该Activity开始的事件。
[0178]可选地,所述处理器1102还用于:
[0179]在对该Activity屏蔽所述第一事件之后,需要关闭该Activity时,向该Activity发送用于使该Activity预备关闭的第三事件。
[0180]可选地,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第三事件包括:用于使该Activity暂停的事件;或
[0181]所述Activity脱离活动状态为:该Activity脱离活动状态,进入停止状态,所述第三事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
[0182]可选地,所述处理器1102具体用干:
[0183]在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
[0184]可选地,所述处理器1102具体用干:
[0185]在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,确定该Activity所属的应用为需要持续运行的应用;
[0186]其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
[0187]可选地,所述处理器1102还用于:
[0188]在收到将指定应用置为需要持续运行的应用的设置指令后,或在启动指定应用时确定该指定应用为预设的需要持续运行的应用后,生成该指定应用对应的所述数据元素,并将该生成的所述数据元素加入所述第二线性数据结构体中。
[0189]可选地,所述处理器1102还用于:
[0190]在收到取消指定应用持续运行方式的取消设置指令后,Activity管理层中的下层将该指定应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0191]可选地,所述处理器1102还用于:
[0192]若确定需要关闭的Activity为需要持续运行的Activity,且该Activity为所述第一线性数据结构体中、该Activity所属的应用唯一的Activity,则将该Activity所属应用对应的所述数据元素从所述第二线性数据结构体中删除。
[0193]可选地,所述处理器1102还用于:
[0194]在收到将显示界面切换给指定的需要持续运行的应用的切换指令后,将该指定应用对应的所述数据元素置为所述第二线性数据结构体的第一个所述数据元素。
[0195]可选地,所述处理器1102还用于:
[0196]在收到调整需要持续运行的应用顺序的调整指令后,按照所述调整指令指定的顺序调整第二线性数据结构体中各所述数据元素的先后顺序。
[0197]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包括有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0198]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0199]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0200]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0201]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0202]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
【权利要求】
1.一种应用于Android平台的处理事件的方法,其特征在于,该方法包括: 在活动Activity脱离活动状态时,Activity管理层中的下层确定该Activity是否需要持续运行; 若确定需要持续运行,Activity管理层中的下层对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
2.如权利要求1所述的方法,其特征在于,所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第一事件包括:用于使该Activity暂停的事件;或 所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第一事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
3.如权利要求1所述的方法,其特征在于,所述Activity管理层中的下层对该Activity屏蔽所述第一事件之后,该方法还包括: 在该Activity返回活动状态时,Activity管理层中的下层对该Activity屏蔽用于使该Activity返回活动状态的第二事件; 其中,所述第二事件是由Activity管理层中的上层向该Activity发送的。
4.如权利要求3所述的方法,其特征在于, 所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第二事件包括:用于使该Activity开始的事件;或 所述Activity脱离活动状态为:该Activity脱离活动状态,并进入停止状态;所述第二事件包括:用于使该Activity重新开始的事件、用于使该Activity预备开始的事件和用于使该Activity开始的事件。
5.如权利要求1所述的方法,其特征在于,所述Activity管理层中的下层对该Activity屏蔽所述第一事件之后,所述方法还包括: 在需要关闭该Activity时,Activity管理层中的下层向该Activity发送用于使该Activity预备关闭的第三事件。
6.如权利要求5所述的方法,其特征在于, 所述Activity脱离活动状态为:该Activity脱离活动状态,并进入暂停状态;所述第三事件包括:用于使该Activity暂停的事件;或 所述Activity脱离活动状态为:该Activity脱离活动状态,进入停止状态,所述第三事件包括:用于使该Activity暂停的事件和用于使该Activity停止的事件。
7.如权利要求1~6任一项所述的方法,其特征在于,所述Activity管理层中的下层确定该Activity是否需要持续运行,包括: 在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,Activity管理层中的下层确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
8.如权利要求7所述的方法,其特征在于,所述Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用,包括: 在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,Activity管理层中的下层确定该Activity所属的应用为需要持续运行的应用; 其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
9.如权利要求8所述的方法,其特征在于,该方法还包括: 在收到将指定应用置为需要持续运行的应用的设置指令后,或在启动指定应用时确定该指定应用为预设的需要持续运行的应用后,Activity管理层中的下层生成该指定应用对应的所述数据元素,并将该生成的所述数据元素加入所述第二线性数据结构体中。
10.如权利要求8所述的方法,其特征在于,该方法还包括: 在收到取消指定应用持续运行方式的取消设置指令后,Activity管理层中的下层将该指定应用对应的所述数据元素从所述第二线性数据结构体中删除。
11.如权利要求8所述的方法,其特征在于,该方法还包括: 若确定需要关闭的Activity为需要持续运行的Activity,且该Activity为所述第一线性数据结构体中、该Activity所属的应用唯一的Activity,则Activity管理层中的下层将该Activity所属应用对应的所 述数据元素从所述第二线性数据结构体中删除。
12.如权利要求8所述的方法,其特征在于,该方法还包括: 在收到将显示界面切换给指定的需要持续运行的应用的切换指令后,Activity管理层中的下层将该指定应用对应的所述数据元素置为所述第二线性数据结构体的第一个所述数据元素。
13.如权利要求8所述的方法,其特征在于,该方法还包括: 在收到调整需要持续运行的应用顺序的调整指令后,Activity管理层中的下层按照所述调整指令指定的顺序调整第二线性数据结构体中各所述数据元素的先后顺序。
14.一种应用于Android平台的处理事件的装置,其特征在于,该装置包括: 处理模块,用于在活动Activity脱离活动状态时,确定该Activity是否需要持续运行; 屏蔽模块,用于在所述处理模块确定需要持续运行时,对该Activity屏蔽用于使该Activity脱离活动状态的第一事件,其中,所述第一事件是由Activity管理层中的上层向该Activity发送的。
15.如权利要求14所述的装置,其特征在于,所述处理模块具体用于: 在确定该Activity所属的应用为需要持续运行的应用,且在用于记录各Activity的第一线性数据结构体中,该Activity处于所属应用的各Activity的最前面时,确定该Activity需要持续运行,否则,确定该Activity无需持续运行。
16.如权利要求15所述的装置,其特征在于,所述处理模块具体用于: 在第二线性数据结构体的所有数据元素的特定标识中,有与该Activity对应的特定标识相同的特定标识时,确定该Activity所属的应用为需要持续运行的应用; 其中,所述第二线性数据结构体用于记录需要持续运行的应用;所述特定标识用于标识该Activity所属的应用。
【文档编号】G06F9/44GK103559035SQ201310534028
【公开日】2014年2月5日 申请日期:2013年10月31日 优先权日:2013年10月31日
【发明者】朱平洋 申请人:青岛海信移动通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1