一种实现插件的多任务栈的方法和装置与流程

文档序号:11285849阅读:174来源:国知局
一种实现插件的多任务栈的方法和装置与流程

本发明涉及计算机处理技术领域,特别是一种实现插件的多任务栈的方法和装置。



背景技术:

在软件开发中,为了方便对软件进行功能扩展,可以采用插件方式进行开发,将软件所要实现的一个一个功能封装在插件中,最后将各个插件集成在软件主程序包中一同发布。

task是一个具有栈结构的容器,可以放置多个活动界面的实例。例如,启动一个应用,系统就会为之创建一个task,来放置根activity;默认情况下,一个activity启动另一个activity时,两个activity是放置在同一个task中的,后者被压入前者所在的task栈,当用户按下后退键,后者从task被弹出,前者又显示在幕前。

插件的所有任务(一个任务可以是一种功能)都只能在一个task中运行,因而无法进行多任务切换。例如,当前用户在操作任务a,打开了任务a的若干个界面;用户从任务a打开任务b,在任务b进行若干操作;如果此时用户需要临时切换到任务a,则必须退出任务b,才能回到任务a。那么,如何实现多任务间的自由切换成为亟待解决的技术问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种实现插件的多任务栈的方法和装置。

依据本发明实施例的一方面,提供了一种实现插件的多任务栈的方法,包括:

获取宿主的插件的多个任务,在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;

当宿主加载插件并启动所述多个任务中的任意任务的当前活动界面时,在所述配置文件中查找所述当前活动界面所属的目标task;

在宿主中查找所述目标task对应的所有注册界面,并依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面;

将所述目标注册界面分配给所述当前活动界面使用。

可选地,所述多个任务各自能够实现插件的不同功能。

可选地,所述task是具有栈结构的容器,能够放置一个或多个活动界面。

可选地,同一个任务的活动界面属于同一个task。

可选地,所述在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,包括:

获取宿主的多个task;

在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task。

可选地,所述在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task,包括:

在宿主的配置文件中注册所述多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在所述多个task中所属的task。

可选地,所述获取宿主的多个task,包括:

读取宿主的配置文件;

查找在宿主的配置文件中注册的宿主的多个task。

可选地,所述方法还包括:

在宿主中为所述多个task中的各个task预设多个注册界面;

对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

可选地,所述方法还包括:

将不同的启动模式分配给各个注册界面的launchmode属性,其中,所述不同的启动模式包括下列任意之一:

standard、singletop、singletask、singleinstance。

可选地,所述对各个task预设的多个注册界面进行分组,包括:

按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

可选地,所述依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面,包括:

确定所述当前活动界面的启动模式;

在所述目标task对应的多组注册界面中,查找所述当前活动界面的启动模式对应的分组;

在所述当前活动界面的启动模式对应的分组中查找所有注册界面;

在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

可选地,所述将所述目标注册界面分配给所述当前活动界面使用,包括:

将所述目标注册界面的信息传递给插件的加载器,由插件的加载器根据所述目标注册界面的信息启动目标注册界面,供所述当前活动界面使用。

依据本发明实施例的另一方面,还提供了一种实现插件的多任务栈的装置,包括:

注册模块,适于获取宿主的插件的多个任务,在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;

查找模块,适于当宿主加载插件并启动所述多个任务中的任意任务的当前活动界面时,在所述配置文件中查找所述当前活动界面所属的目标task;

选取模块,适于在宿主中查找所述目标task对应的所有注册界面,并依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面;

分配模块,适于将所述目标注册界面分配给所述当前活动界面使用。

可选地,所述多个任务各自能够实现插件的不同功能。

可选地,所述task是具有栈结构的容器,能够放置一个或多个活动界面。

可选地,同一个任务的活动界面属于同一个task。

可选地,所述注册模块包括:

获取单元,适于获取宿主的多个task;

注册单元,适于在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task。

可选地,所述注册单元还适于:

在宿主的配置文件中注册所述多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在所述多个task中所属的task。

可选地,所述获取单元还适于:

读取宿主的配置文件;

查找在宿主的配置文件中注册的宿主的多个task。

可选地,所述装置还包括:

配置模块,适于在宿主中为所述多个task中的各个task预设多个注册界面;对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

可选地,所述配置模块还适于:

将不同的启动模式分配给各个注册界面的launchmode属性,其中,所述不同的启动模式包括下列任意之一:

standard、singletop、singletask、singleinstance。

可选地,所述配置模块还适于:

按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

可选地,所述选取模块还适于:

确定所述当前活动界面的启动模式;

在所述目标task对应的多组注册界面中,查找所述当前活动界面的启动模式对应的分组;

在所述当前活动界面的启动模式对应的分组中查找所有注册界面;

在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

可选地,所述分配模块还适于:

将所述目标注册界面的信息传递给插件的加载器,由插件的加载器根据所述目标注册界面的信息启动目标注册界面,供所述当前活动界面使用。

在本发明实施例中,获取宿主的插件的多个任务,在宿主的配置文件中注册多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;当宿主加载插件并启动多个任务中的任意任务的当前活动界面时,在配置文件中查找当前活动界面所属的目标task;进而,在宿主中查找目标task对应的所有注册界面,并依据预设的选取策略从目标task对应的所有注册界面中选取目标注册界面;之后,将目标注册界面分配给当前活动界面使用。可以看到,本发明实施例在宿主的配置文件中注册多个任务各自的活动界面所属的task,并且不同的任务各自的活动界面属于不同的task,这样使得不同的任务之间能够自由切换,无需退出任务。并且,本发明实施例在启动任意任务的当前活动界面时,能够从当前活动界面所属的目标task对应的所有注册界面中选取目标注册界面,将目标注册界面分配给当前活动界面使用,保证了任务界面的正常启动。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一实施例的实现插件的多任务栈的方法的流程图;

图2示出了根据本发明一实施例task预设的多个注册界面的分组示意图;

图3示出了根据本发明一实施例的选取目标注册界面的方法的流程图;

图4示出了根据本发明另一实施例的实现插件的多任务栈的方法的流程图;

图5示出了根据本发明一实施例的实现插件的多任务栈的装置的结构示意图;以及

图6示出了根据本发明另一实施例的实现插件的多任务栈的装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如前文介绍,task是一个具有栈结构的容器,可以放置多个活动界面的实例。以android(安卓)系统为例,活动界面为activity,可以将task理解为多个activity的集合,它们按顺序排列。现有技术中,在宿主(即是指主程序)的插件中,插件的所有任务的activity放到一个单独的task中,导致无法进行多任务自由切换。

为解决上述技术问题,本发明实施例提供了一种实现插件的多任务栈的方法,图1示出了根据本发明一实施例的实现插件的多任务栈的方法的流程图。如图1所示,该方法至少可以包括以下步骤s102至s108。

步骤s102,获取宿主的插件的多个任务,在宿主的配置文件中注册多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task。

步骤s104,当宿主加载插件并启动多个任务中的任意任务的当前活动界面时,在配置文件中查找当前活动界面所属的目标task。

步骤s106,在宿主中查找目标task对应的所有注册界面,并依据预设的选取策略从目标task对应的所有注册界面中选取目标注册界面。

步骤s108,将目标注册界面分配给当前活动界面使用。

在本发明实施例中,获取宿主的插件的多个任务,在宿主的配置文件中注册多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;当宿主加载插件并启动多个任务中的任意任务的当前活动界面时,在配置文件中查找当前活动界面所属的目标task;进而,在宿主中查找目标task对应的所有注册界面,并依据预设的选取策略从目标task对应的所有注册界面中选取目标注册界面;之后,将目标注册界面分配给当前活动界面使用。可以看到,本发明实施例在宿主的配置文件中注册多个任务各自的活动界面所属的task,并且不同的任务各自的活动界面属于不同的task,这样使得不同的任务之间能够自由切换,无需退出任务。并且,本发明实施例在启动任意任务的当前活动界面时,能够从当前活动界面所属的目标task对应的所有注册界面中选取目标注册界面,将目标注册界面分配给当前活动界面使用,保证了任务界面的正常启动。

上文步骤s102中提及的插件的多个任务,其各自能够实现插件的不同功能,例如手机卫士上的防盗插件有多个任务,分别能够实现定位、报警等功能。多个任务中的各个任务包括一个或多个活动界面,步骤s102中提及的task能够放置或装载一个或多个活动界面。

宿主的task是固定的,且有多个,每个task包含多个活动界面,都预埋或配置在宿主的配置文件中。以android系统为例,宿主的每个task包含多个activity,都预埋在宿主的配置文件androidmanifest.xml中。宿主的每个task中能够放置或装载多个activity,其回退和打开的顺序逻辑和基本的数据结构栈是一致的。

进一步地,步骤s102中在宿主的配置文件中注册多个任务各自的活动界面所属的task,本发明实施例提供了一种可选的方案,在该方案中,可以获取宿主的多个task,进而在宿主的配置文件中注册多个任务各自的活动界面在多个task中所属的task。例如,宿主的多个task分别为task1、task2、task3,则可以在宿主的配置文件中注册多个任务各自的活动界面属于task1、task2或者task3,需要说明的是,此处例举仅是示意性的,并不对本发明实施例进行限制。

此外,步骤s102中限定了不同的任务各自的活动界面属于不同的task,从而使得不同的任务之间能够自由切换,无需退出任务。在可选的实施例中,为了保证同一任务的不同活动界面的快速、有效切换,同一个任务的活动界面属于同一个task。

在本发明的可选实施例中,上述在宿主的配置文件中注册多个任务各自的活动界面在多个task中所属的task时,可以在宿主的配置文件中注册多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在多个task中所属的task。仍然以上述例举为例,对于多个任务中的各个任务,可以在宿主的配置文件中注册各个任务的活动界面的taskaffinity属性,由该属性指示活动界面属于task1、task2或者task3。

如上文介绍,宿主的task是固定的,且有多个,每个task包含多个活动界面,都预埋或配置在宿主的配置文件中。因而,上述获取宿主的多个task时,可以读取宿主的配置文件,进而查找在宿主的配置文件中注册的宿主的多个task。进一步地,本发明实施例还可以在宿主中为多个task中的各个task预设多个注册界面,以提供给活动界面使用,并且对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

在本发明的可选实施例中,将不同的启动模式分配给各个注册界面的launchmode属性,以指示各个注册界面的启动模式,这里,不同的启动模式可以包括standard、singletop、singletask、singleinstance中的任意之一。以android系统为例,下面将详细介绍这几种启动模式的区别。

(1)哪个任务存放着activity,用来对行为进行响应。对standard和singletop这两个启动模式来说,这个任务是产生行为,并且调用startactivity()的那个。

(2)它们是否可以有多个实例。standard和singletop类型的activity可以被实例化多次。它们可以属于多个任务,一个特定的任务也可以拥有同一个activity的多个实例。

(3)作为比较singletask和singleinstance类型的activity只限定有一个实例。因为这些activity是任务的根。这个限制意味着,在设备上不能同时有超过一个任务的实例。

(4)是否能有其他的activity在它所在的任务中。singleinstance类型的activity是它所在任务中唯一的activity。如果它启动了其他的activity,不管那个activity的启动模式如何,它都会加载到一个不同的任务中。在其他的方面,singleinstance和singletask启动模式是相同的。

(5)其他三种模式运行任务中有多个activity。singletask总是任务中的根activity,但是它可以启动其他的activity并分配到它所在的任务中。standard和singletop类型的activity可以出现在任务中的任何地方。

(6)是否启动一个新的实例来处理一个新的行为。对默认的standard启动模式来说,对于每一个行为都会创建一个新的实例来响应。每个实例只处理一个行为。对于singletop启动模式,如果一个已经存在的实例位于目标任务activity栈的栈顶,那么它将被重用来处理这个行为。如果它不在栈顶,它将不会被重用,而是为行为创建一个新的实例,并压入栈中。

例如,一个任务的activity栈由根activitya、b、c和d从上到下按这样的顺序组成,所以这个栈就是a-b-c-d。一个行为指向类型为d的activity。如果d是默认的standard启动模式,一个新的实例会被启动,栈现在就是这样a-b-c-d-d。但是,如果d的加载模式是singletop,已经存在的实例会用来处理这个行为(因为它在栈的顶端),并且栈中还应该是a-b-c-d。

在前面提到,singletask和singleinstance类型的activity最多只有一个实例,所以它们的实例应该会处理每个新的行为。singleinstance类型的activity总是在栈的顶端(因为它是任务中唯一的一个activity),所以总是能够适当的处理行为。然而,singletask类型的activity也许会有其他的activity在它的上面。如果是这样的话,那就不能处理这个行为,这个行为被丢弃。即使这个行为被丢弃了,它的到来也会导致那些应该保留不变任务显示到前台来。

进一步地,在对各个task预设的多个注册界面进行分组时,可以按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

如图2所示,存在launchmode为singletask的行1),为standard的行2),以及为singletop的行3)。图2中的每个圆圈表示注册界面,可以看到,1)已被占用了两个注册界面,2)被占用一个注册界面,3)没有被占用。在理解时类似停车位,假如用户想停车,则应该有如下几个步骤。

步骤1,首先要知道自己是什么车。如果是轿车,则可以停;如果是水泥罐车,也许就不行了。也即明确自己的activity类型,不能把singletask的activity停在standard的位置上。

步骤2,通过观察或者咨询物业管理员,以寻找适合自己的空余车位。也即从多个注册界面寻找应该使用哪个。

步骤3,将车准确停在车位上。也即将目标注册界面分配给当前活动界面使用。

步骤4,下次找时,直接找车位即可。毕竟相似的车很常见。也就是说,直接通过遍历所有注册界面,从中寻找符合的目标注册界面即可。

基于上述对各个task预设的多个注册界面的分组,即一种启动模式对应一个组,上文步骤s106中依据预设的选取策略从目标task对应的所有注册界面中选取目标注册界面,本发明实施例提供了一种可选的方案,图3示出了根据本发明一实施例的选取目标注册界面的方法的流程图。如图3所示,该方法至少可以包括以下步骤s302至s308。

步骤s302,确定当前活动界面的启动模式。

步骤s304,在目标task对应的多组注册界面中,查找当前活动界面的启动模式对应的分组。

步骤s306,在当前活动界面的启动模式对应的分组中查找所有注册界面。

步骤s308,在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

本发明实施例基于不同的启动模式选取目标注册界面,实现快速、有效地选取目的,保证了任务界面的正常启动。

进一步地,在上文步骤s108中将目标注册界面分配给当前活动界面使用时,本发明实施例可以将目标注册界面的信息传递给插件的加载器,由插件的加载器根据目标注册界面的信息启动目标注册界面,供当前活动界面使用。

以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过一具体实施例来详细介绍本发明的实现插件的多任务栈的方法的过程。该实施例以android系统为例,活动界面为activity,task为activity栈,宿主的配置文件为androidmanifest.xml。

图4示出了根据本发明另一实施例的实现插件的多任务栈的方法的流程图。如图4所示,该方法至少可以包括以下步骤s402至s420。

步骤s402,读取宿主的配置文件,查找在宿主的配置文件中注册的宿主的多个task。

步骤s404,在宿主中为多个task中的各个task预设多个注册界面。

步骤s406,对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

在该步骤中,例如可以分组为n组,每组有m个注册界面。并且,可以按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。这里,不同的启动模式可以包括standard、singletop、singletask、singleinstance中的任意之一,关于各种启动模式的区别请参见前文介绍,此处不再赘述。

步骤s408,获取宿主的插件的多个任务。

在该步骤中,插件的多个任务,其各自能够实现插件的不同功能。

步骤s410,在宿主的配置文件中,注册多个任务各自的活动界面在宿主的多个task中所属的task。

例如,宿主的多个task分别为task1、task2、task3,则可以在宿主的配置文件中注册多个任务各自的活动界面属于task1、task2或者task3,需要说明的是,此处例举仅是示意性的,并不对本发明实施例进行限制。

进一步地,可以在宿主的配置文件中注册多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在多个task中所属的task。仍然以上述例举为例,对于多个任务中的各个任务,可以在宿主的配置文件中注册各个任务的活动界面的taskaffinity属性,由该属性指示活动界面属于task1、task2或者task3。

步骤s412,当宿主加载插件并启动多个任务中的任意任务的当前活动界面时,在配置文件中查找当前活动界面所属的目标task。

步骤s414,确定当前活动界面的启动模式,在目标task对应的多组注册界面中,查找当前活动界面的启动模式对应的分组。

步骤s416,在当前活动界面的启动模式对应的分组中查找所有注册界面。

步骤s418,在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

步骤s420,将目标注册界面的信息传递给插件的加载器,由插件的加载器根据目标注册界面的信息启动目标注册界面,供当前活动界面使用。

举例来说,在宿主的配置文件androidmanifest.xml中注册插件的某个任务的activity1属于task1,则框架会到宿主中查找task1的所有activity,找到合适的activity的时候,就将它分配给插件的activity1使用。

本发明实施例在宿主的配置文件中注册多个任务各自的活动界面所属的task,并且不同的任务各自的活动界面属于不同的task,这样使得不同的任务之间能够自由切换,无需退出任务。并且,本发明实施例在启动任意任务的当前活动界面时,能够从当前活动界面所属的目标task对应的所有注册界面中选取目标注册界面,将目标注册界面分配给当前活动界面使用,保证了任务界面的正常启动。

需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。

基于上文各个实施例提供的实现插件的多任务栈的方法,基于同一发明构思,本发明实施例还提供了一种实现插件的多任务栈的装置。

图5示出了根据本发明一实施例的实现插件的多任务栈的装置的结构示意图。如图5所示,该装置至少可以包括注册模块510、查找模块520、选取模块530以及分配模块540。

现介绍本发明实施例的实现插件的多任务栈的装置的各组成或器件的功能以及各部分间的连接关系:

注册模块510,适于获取宿主的插件的多个任务,在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;

查找模块520,与注册模块510相耦合,适于当宿主加载插件并启动所述多个任务中的任意任务的当前活动界面时,在所述配置文件中查找所述当前活动界面所属的目标task;

选取模块530,与查找模块520相耦合,适于在宿主中查找所述目标task对应的所有注册界面,并依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面;

分配模块540,与选取模块530相耦合,适于将所述目标注册界面分配给所述当前活动界面使用。

在本发明一实施例中,所述多个任务各自能够实现插件的不同功能。

在本发明一实施例中,所述task是具有栈结构的容器,能够放置一个或多个活动界面。

在本发明一实施例中,同一个任务的活动界面属于同一个task。

在本发明一实施例中,如图6所示,所述注册模块510包括:

获取单元511,适于获取宿主的多个task;

注册单元512,与获取单元511相耦合,适于在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task。

在本发明一实施例中,所述注册单元512还适于:

在宿主的配置文件中注册所述多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在所述多个task中所属的task。

在本发明一实施例中,所述获取单元511还适于:

读取宿主的配置文件;

查找在宿主的配置文件中注册的宿主的多个task。

在本发明一实施例中,如图6所示,上文图5展示的装置还可以包括:

配置模块550,与选取模块530相耦合,适于在宿主中为所述多个task中的各个task预设多个注册界面;对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

在本发明一实施例中,所述配置模块550还适于:

将不同的启动模式分配给各个注册界面的launchmode属性,其中,所述不同的启动模式包括下列任意之一:

standard、singletop、singletask、singleinstance。

在本发明一实施例中,所述配置模块550还适于:

按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

在本发明一实施例中,所述选取模块530还适于:

确定所述当前活动界面的启动模式;

在所述目标task对应的多组注册界面中,查找所述当前活动界面的启动模式对应的分组;

在所述当前活动界面的启动模式对应的分组中查找所有注册界面;

在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

在本发明一实施例中,所述分配模块540还适于:

将所述目标注册界面的信息传递给插件的加载器,由插件的加载器根据所述目标注册界面的信息启动目标注册界面,供所述当前活动界面使用。

根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:

在本发明实施例中,获取宿主的插件的多个任务,在宿主的配置文件中注册多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;当宿主加载插件并启动多个任务中的任意任务的当前活动界面时,在配置文件中查找当前活动界面所属的目标task;进而,在宿主中查找目标task对应的所有注册界面,并依据预设的选取策略从目标task对应的所有注册界面中选取目标注册界面;之后,将目标注册界面分配给当前活动界面使用。可以看到,本发明实施例在宿主的配置文件中注册多个任务各自的活动界面所属的task,并且不同的任务各自的活动界面属于不同的task,这样使得不同的任务之间能够自由切换,无需退出任务。并且,本发明实施例在启动任意任务的当前活动界面时,能够从当前活动界面所属的目标task对应的所有注册界面中选取目标注册界面,将目标注册界面分配给当前活动界面使用,保证了任务界面的正常启动。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的一种实现插件的多任务栈的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

依据本发明实施例的一方面,提供了a1.一种实现插件的多任务栈的方法,包括:

获取宿主的插件的多个任务,在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;

当宿主加载插件并启动所述多个任务中的任意任务的当前活动界面时,在所述配置文件中查找所述当前活动界面所属的目标task;

在宿主中查找所述目标task对应的所有注册界面,并依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面;

将所述目标注册界面分配给所述当前活动界面使用。

a2.根据a1所述的方法,其中,所述多个任务各自能够实现插件的不同功能。

a3.根据a1或a2所述的方法,其中,所述task是具有栈结构的容器,能够放置一个或多个活动界面。

a4.根据a1-a3中任一项所述的方法,其中,同一个任务的活动界面属于同一个task。

a5.根据a1-a4中任一项所述的方法,其中,所述在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,包括:

获取宿主的多个task;

在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task。

a6.根据a5所述的方法,其中,所述在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task,包括:

在宿主的配置文件中注册所述多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在所述多个task中所属的task。

a7.根据a5或a6所述的方法,其中,所述获取宿主的多个task,包括:

读取宿主的配置文件;

查找在宿主的配置文件中注册的宿主的多个task。

a8.根据a5-a7中任一项所述的方法,其中,还包括:

在宿主中为所述多个task中的各个task预设多个注册界面;

对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

a9.根据a8所述的方法,其中,还包括:

将不同的启动模式分配给各个注册界面的launchmode属性,其中,所述不同的启动模式包括下列任意之一:

standard、singletop、singletask、singleinstance。

a10.根据a9所述的方法,其中,所述对各个task预设的多个注册界面进行分组,包括:

按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

a11.根据a10所述的方法,其中,所述依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面,包括:

确定所述当前活动界面的启动模式;

在所述目标task对应的多组注册界面中,查找所述当前活动界面的启动模式对应的分组;

在所述当前活动界面的启动模式对应的分组中查找所有注册界面;

在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

a12.根据a11所述的方法,其中,所述将所述目标注册界面分配给所述当前活动界面使用,包括:

将所述目标注册界面的信息传递给插件的加载器,由插件的加载器根据所述目标注册界面的信息启动目标注册界面,供所述当前活动界面使用。

依据本发明实施例的另一方面,还提供了b13.一种实现插件的多任务栈的装置,包括:

注册模块,适于获取宿主的插件的多个任务,在宿主的配置文件中注册所述多个任务各自的活动界面所属的task,其中,不同的任务各自的活动界面属于不同的task;

查找模块,适于当宿主加载插件并启动所述多个任务中的任意任务的当前活动界面时,在所述配置文件中查找所述当前活动界面所属的目标task;

选取模块,适于在宿主中查找所述目标task对应的所有注册界面,并依据预设的选取策略从所述目标task对应的所有注册界面中选取目标注册界面;

分配模块,适于将所述目标注册界面分配给所述当前活动界面使用。

b14.根据b13所述的装置,其中,所述多个任务各自能够实现插件的不同功能。

b15.根据b13或b14所述的装置,其中,所述task是具有栈结构的容器,能够放置一个或多个活动界面。

b16.根据b13-b15中任一项所述的装置,其中,同一个任务的活动界面属于同一个task。

b17.根据b13-b16中任一项所述的装置,其中,所述注册模块包括:

获取单元,适于获取宿主的多个task;

注册单元,适于在宿主的配置文件中注册所述多个任务各自的活动界面在所述多个task中所属的task。

b18.根据b17所述的装置,其中,所述注册单元还适于:

在宿主的配置文件中注册所述多个任务各自的活动界面的taskaffinity属性,由该属性指示活动界面在所述多个task中所属的task。

b19.根据b17或b18所述的装置,其中,所述获取单元还适于:

读取宿主的配置文件;

查找在宿主的配置文件中注册的宿主的多个task。

b20.根据b17-b19中任一项所述的装置,其中,还包括:

配置模块,适于在宿主中为所述多个task中的各个task预设多个注册界面;对各个task预设的多个注册界面进行分组,其中,各组对应一个或多个注册界面。

b21.根据b20所述的装置,其中,所述配置模块还适于:

将不同的启动模式分配给各个注册界面的launchmode属性,其中,所述不同的启动模式包括下列任意之一:

standard、singletop、singletask、singleinstance。

b22.根据b21所述的装置,其中,所述配置模块还适于:

按照不同的启动模式对各个task预设的多个注册界面进行分组,其中,一种启动模式对应一个组。

b23.根据b22所述的装置,其中,所述选取模块还适于:

确定所述当前活动界面的启动模式;

在所述目标task对应的多组注册界面中,查找所述当前活动界面的启动模式对应的分组;

在所述当前活动界面的启动模式对应的分组中查找所有注册界面;

在查找到的所有注册界面中确定使用状态为空余状态的注册界面,并从中选取任意注册界面作为目标注册界面。

b24.根据b23所述的装置,其中,所述分配模块还适于:

将所述目标注册界面的信息传递给插件的加载器,由插件的加载器根据所述目标注册界面的信息启动目标注册界面,供所述当前活动界面使用。

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