本发明实施例涉及互联网技术领域,具体涉及一种应用启动方法及装置。
背景技术:
应用在启动时,应用启动速度的快慢、页面显示时是否卡顿、网络影响页面展示效果、应用宕机等问题,都会大大影响用户的使用体验。良好的用户使用体验可以增加用户对应用的黏度,用户使用体验较差时会导致用户流失等问题。
现有技术中,在应用启动时,会以应用为整体来进行启动,应用中包含或涉及的多个不同服务在应用启动的同时也被调用启动。当其中某个服务的启动耗时较多时,会导致应用启动较慢,影响应用的整体启动。因此,优化应用启动,解决应用启动时可能遇到的各种问题,是应用启动急需解决的问题。
技术实现要素:
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的应用启动方法及装置。
根据本发明实施例的一个方面,提供了一种应用启动方法,方法包括:
监听应用启动命令,对应用启动命令进行拦截;应用的终端设备为ios终端设备;
根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务,并查询与应用启动相关联的多个服务的启动时间等级;其中,服务的启动时间等级依据服务与应用框架和/或应用启动过程中的待加载业务之间是否存在的依赖关系而确定;
按照各个服务的启动时间等级,将服务依次嵌入启动流程管控,以启动各个服务,完成对应用的启动。
可选地,多个服务包含一个或多个第一服务以及一个或多个第二服务;其中,第一服务为与应用框架之间存在依赖关系的服务,第二服务为与待加载业务之间存在依赖关系的服务;
第一服务的启动时间等级高于第二服务的启动时间等级。
可选地,多个服务还包含一个或多个第三服务;第三服务包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务;
第三服务的启动时间等级低于第二服务的启动时间等级。
可选地,第三服务还包括与非应用首页面的业务之间存在依赖关系的服务;第三服务根据用户触发的业务场景和/或业务使用诉求启动。
可选地,按照各个服务的启动时间等级,将服务依次嵌入启动流程管控,以启动各个服务,完成对应用的启动进一步包括:
按照各个服务的启动时间等级,并发启动同一启动时间等级的多个服务;其中,并发启动的服务数量根据终端设备的性能设置。
可选地,根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务进一步包括:
根据应用启动指令,确定待启动应用,获取应用的配置信息和/或网络传输信息;
根据应用的配置信息和/或网络传输信息,确定应用启动过程中的待加载业务以及应用框架信息;
根据待加载业务进行服务抽取,确定与待加载业务之间存在依赖关系的服务,以及,对应用框架层进行服务抽取,确定与应用框架之间存在依赖关系的服务。
可选地,方法还包括:
当应用更新后,获取应用更新相关联的应用框架和/或应用启动过程中的待加载业务;
根据应用框架和/或应用启动过程中的待加载业务与各个服务间的依赖关系,更新各个服务的启动时间等级。
可选地,应用的终端设备为ios终端设备。
根据本发明实施例的另一方面,提供了一种应用启动装置,其包括:
拦截模块,适于监听应用启动命令,对应用启动命令进行拦截;应用的终端设备为ios终端设备;
抽取查询模块,适于根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务,并查询与应用启动相关联的多个服务的启动时间等级;其中,服务的启动时间等级依据服务与应用框架和/或应用启动过程中的待加载业务之间是否存在的依赖关系而确定;
启动模块,适于按照各个服务的启动时间等级,将服务依次嵌入启动流程管控,以启动各个服务,完成对应用的启动。
可选地,多个服务包含一个或多个第一服务以及一个或多个第二服务;其中,第一服务为与应用框架之间存在依赖关系的服务,第二服务为与待加载业务之间存在依赖关系的服务;
第一服务的启动时间等级高于第二服务的启动时间等级。
可选地,多个服务还包含一个或多个第三服务;第三服务包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务;
第三服务的启动时间等级低于第二服务的启动时间等级。
可选地,第三服务还包括与非应用首页面的业务之间存在依赖关系的服务;第三服务根据用户触发的业务场景和/或业务使用诉求启动。
可选地,启动模块进一步适于:
按照各个服务的启动时间等级,并发启动同一启动时间等级的多个服务;其中,并发启动的服务数量根据终端设备的性能设置。
可选地,抽取查询进一步适于:
根据应用启动指令,确定待启动应用,获取应用的配置信息和/或网络传输信息;
根据应用的配置信息和/或网络传输信息,确定应用启动过程中的待加载业务以及应用框架信息;
根据待加载业务进行服务抽取,确定与待加载业务之间存在依赖关系的服务,以及,对应用框架层进行服务抽取,确定与应用框架之间存在依赖关系的服务。
可选地,装置还包括:
更新模块,适于当应用更新后,获取应用更新相关联的应用框架和/或应用启动过程中的待加载业务;根据应用框架和/或应用启动过程中的待加载业务与各个服务间的依赖关系,更新各个服务的启动时间等级。
可选地,应用的终端设备为ios终端设备。
根据本发明实施例的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述应用启动方法对应的操作。
根据本发明实施例的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述应用启动方法对应的操作。
根据本发明实施例的提供的应用启动方法及装置,对ios终端设备进行监听,拦截应用启动命令,基于应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务。按照服务的启动时间等级依次启动服务,一方面可以解决各个服务均同时启动,多个服务占用资源过多影响服务启动效率等问题;另一方面依据服务与应用框架和/或应用启动过程中的待加载业务之间的依赖关系,按照启动时间等级将启动时间等级高的服务先启动,避免了各个服务同时启动时,启动时间等级低的服务因所需的启动时间等级高的服务未启动成功,导致的启动时间等级低服务无法启动成功、启动时间过长等引起的应用宕机等问题。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的应用启动方法的流程图;
图2示出了根据本发明另一个实施例的应用启动方法的流程图;
图3示出了根据本发明一个实施例的应用启动装置的结构示意图;
图4示出了根据本发明一个实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的应用启动方法的流程图,如图1所示,该方法包括如下步骤:
步骤s101,监听应用启动命令,对应用启动命令进行拦截。
本实施例中应用的终端设备为ios终端设备,即终端设备系统为ios系统。由于ios系统的闭源特性,当接收到应用启动命令后,现有技术直接由ios系统执行相关的启动命令,无法对ios系统的启动命令的处理流程进行修改,即无法直接修改应用启动时的启动任务顺序,使其以应用整体进行启动,影响应用启动效率。
考虑以上问题,本实施例通过监听应用启动命令,对接收到的应用启动命令进行拦截。具体的,如通过消息通知的监听机制,当用户在终端设备直接触发应用图标,或者,通过其它应用外部访问等方式来启动应用时,监听到应用启动命令,对其进行拦截。
步骤s102,根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务。
根据拦截的应用启动命令,可以确定应用启动命令对应的待启动应用。获取该待启动应用的配置信息、网络传输信息(应用访问、使用网络时获取的相关信息等),确定应用启动过程中的待加载业务以及应用框架信息等。根据待加载业务,从业务层中抽取出需呈现给用户展示所需的服务,即得到与待加载业务存在依赖关系的服务。同时,基于应用启动,对应用框架层也进行抽取,如确定该应用启动时,应用框架加载、渲染、运行等与应用框架之间存在依赖关系的服务等。本实施例从应用框架层和业务层等不同层面进行分层服务抽取,从应用框架和应用的业务本身出发,得到与应用启动相关联的多个服务。多个服务包含应用框架、应用启动过程中的待加载业务之间存在的依赖关系的服务。以上服务抽取不限定抽取顺序。
服务抽取得到的多个服务,应用框架所依赖的服务以及待加载业务依赖的服务包括如ios终端设备系统包含的应用框架的底层服务、终端设备系统提供的可供应用调用的服务、应用自身包含的服务。终端设备系统包含的应用框架的底层服务包括如提供应用编码使用的基础架构服务、应用开发使用的系统服务,定义应用的外观相关的服务等。终端设备系统提供的可供应用调用的服务包括如系统的定位服务、播放服务、展示服务等终端设备系统提供的服务等。应用自身包含的服务包括为实现应用中各业务所开发的服务等。
步骤s103,查询与应用启动相关联的多个服务的启动时间等级。
根据步骤s102的服务抽取得到多个服务后,将原应用启动这一过程从原ios系统执行相关的启动命令抽象为各个服务的启动。在对各个服务启动时,还需查询确定各个服务的启动时间等级,以根据启动时间等级启动服务,避免服务启动过程中的服务同时启动资源占用过多问题,或服务间启动先后顺序影响服务启动失败、应用宕机等问题。
具体的,多个服务的启动时间等级通过应用启动过程中待加载的业务与各个服务之间是否存在的依赖关系来定义。多个服务中包含一个或多个第一服务以及一个或多个第二服务。第一服务为与应用框架之间存在依赖关系的服务,如应用启动时,需要先对应用框架进行渲染,只有在应用框架渲染后,才能对应的在应用框架内添加展示内容、添加业务处理流程等。因此,应用框架所依赖的应用框架服务尤为重要,包括如ui层框架、媒体处理相关框架等服务,具体根据实际的应用框架确定。第二服务为与待加载业务之间存在依赖关系的服务,应用框架服务启动后,如应用向用户展示待加载业务相关内容,需要根据待加载业务,分析得到与待加载业务之间存在依赖关系的服务。如应用页面展示信息时基于用户当前定位进行展示,待加载业务依赖定位服务,定位服务为第二服务。第二服务包括了待加载业务依赖的各种前置服务,第二服务启动成功与否影响待加载业务的正常使用,第二服务需要在待加载业务执行前启动。具体的第二服务根据应用的待加载业务确定。综合以上多个服务的重要程度,如第一服务中的ui层框架服务,当应用启动展示页面时,需要先启动ui层框架服务,渲染对应的ui层的框架,在此基础上,才能基于渲染后的ui层框架填充对应的页面内容。因此,第一服务的启动时间等级高于第二服务的启动时间等级,便于后续按照启动时间等级在第一服务启动后,再启动第二服务,保障第二服务启动时,第一服务已经启动完成,避免因应用框架未渲染完成导致的第二服务启动失败等问题。
除第一服务、第二服务外,应用启动还可以包含其它服务,其它服务根据启动时的重要程度、与待加载业务的依赖关系的紧密度等确定对应的启动时间等级,其它服务的启动时间等级低于第一服务、第二服务的启动时间等级。
根据服务的启动时间等级,明确了应用启动时待启动的服务,以及服务启动的顺序,除精简应用启动时同一时间所需启动的服务外,也打破了原应用启动时顺序的不可调整,应用的启动从应用的所需出发,如应用需呈现用户的业务出发,使得应用的启动更符合应用自身的需求,启动时更符合应用的个性化业务需求。
步骤s104,按照各个服务的启动时间等级,将服务依次嵌入启动流程管控,以启动各个服务,完成对应用的启动。
现有技术在应用启动时将以上各个服务同时启动,每个服务在启动时都会占用终端设备的资源,导致资源占用较大影响启动效率。本实施例按照各个服务的启动时间等级依次启动各个服务,如遵循ios系统中应用流程管控的规范,将服务依次嵌入对应的启动流程管控中,各服务按照启动时间等级顺序依次启动,在第一服务启动成功后,启动第二服务…,从而完成对应用的启动。
根据本发明实施例提供的应用启动方法,对ios终端设备进行监听,拦截应用启动命令,基于应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务。按照服务的启动时间等级依次启动服务,一方面可以解决各个服务均同时启动,多个服务占用资源过多影响服务启动效率等问题;另一方面依据服务与应用框架和/或应用启动过程中的待加载业务之间的依赖关系,按照启动时间等级将启动时间等级高的服务先启动,避免了各个服务同时启动时,启动时间等级低的服务因所需的启动时间等级高的服务未启动成功,导致的启动时间等级低服务无法启动成功、启动时间过长等引起的应用宕机等问题。
图2示出了根据本发明一个实施例的应用启动方法的流程图,如图2所示,该方法包括以下步骤:
步骤s201,监听应用启动命令,对应用启动命令进行拦截。
该步骤参照步骤s101的描述,在此不再赘述。
步骤s202,根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务,并查询与应用启动相关联的多个服务的启动时间等级。
根据应用启动命令进行分层服务抽取时,除应用启动相关联的第一服务和第二服务外,多个服务还包含一个或多个第三服务。第三服务包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务。如应用首页面展示店铺信息,第三服务包括店铺信息获取服务等。第三服务的启动时间等级低于第二服务的启动时间等级,第二服务包括应用首页面的待加载业务的前置服务,如定位服务。在第二服务启动后,获取到用户的定位信息,根据用户的定位信息,启动第三服务获取位于该定位信息附近的店铺信息等。此处,第三服务可以为仅包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务。在启动第三服务后,完成应用首页面的待加载业务的加载,向用户展示应用首页面。对于用户而言,应用首页面展示完成后,用户就可以操作应用,用户感知应用已经启动,不会去关注应用的所有业务是否均被加载完成。即在第三服务启动后,对用户而言,应用启动完成,其它服务的后续启动不会影响用户对应用首页面的浏览,大大提升用户使用应用的体验效果。
进一步,第三服务还可以包括与非应用首页面的业务之间存在依赖关系的服务,如后续的订单处理相关的服务、点击应用首页面跳转至其它页面的服务等,以上服务可以根据业务使用诉求相应的启动第三服务,或者,根据用户操作应用时触发的业务场景中包含的业务对应的启动第三服务,以减少均根据应用启动命令同时启动各服务时终端设备的运行压力,提升应用启动时间。
步骤s203,按照各个服务的启动时间等级,并发启动同一启动时间等级的多个服务。
在按照各个服务的启动时间等级依次启动服务时,为缩短服务的启动时间,可以将同一启动时间等级的多个服务并发启动,以达到空间换时间的效果。在并发启动时,并发启动的服务数量根据终端设备的性能设置,如考虑ios终端设备的硬件性能等,避免并发启动线程影响终端设备的正常运行。进一步,并发启动的同一启动时间等级的各个服务之间不存在相互间的依赖关系等,避免因并行启动导致某一服务启动失败等问题。如以第三服务为例,第三服务包括的店铺信息获取服务、应用首页面的标签展示获取服务等,将以上服务存储在服务队列中,并发启动多个线程,每个线程对应的启动一个服务,同时并发启动多个服务。
步骤s204,当应用更新后,获取应用更新相关联的应用框架和/或应用启动过程中的待加载业务。
步骤s205,根据应用框架和/或应用启动过程中的待加载业务与各个服务间的依赖关系,更新各个服务的启动时间等级。
对于各个服务的启动时间等级,在根据服务与应用框架和/或应用启动过程中的待加载业务之间是否存在的依赖关系确定后,记录各个服务的启动时间等级,方便应用启动时,直接查询获取到记录的各个服务的启动时间等级。
本实施例中除记录各个服务的启动时间等级外,还可以根据应用的更新情况,及时地更新服务的启动时间等级,实现对应用全链路管控。具体的,当应用更新后,根据应用更新的应用信息获取应用更新相关联的应用框架和/或应用启动过程中的待加载业务,此处相关联的应用框架和/或应用启动过程中的待加载业务包括新增的应用框架和/或应用启动过程中的待加载业务、删除的应用框架和/或应用启动过程中的待加载业务、调整顺序的应用启动过程中的待加载业务等。根据以上应用框架和/或应用启动过程中的待加载业务,以及与各个服务间的依赖关系,可以及时地更新各个服务的启动时间等级,方便在应用更新后启动时,基于更新后的服务的启动时间等级依次启动服务,完成应用的启动。
根据本发明实施例提供的应用启动方法,根据应用启动指令进行分层服务抽取。得到多个服务,包括第一服务、第二服务和第三服务。其中,第三服务包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务。在启动第三服务后,完成应用首页面的待加载业务的加载,向用户展示应用首页面。对于用户而言,应用首页面展示完成后,用户就可以操作应用,用户感知应用已经启动,不会去关注应用的所有业务是否均被加载完成。即在第三服务启动后,对用户而言,应用启动完成,其它服务的后续启动不会影响用户对应用首页面的浏览,大大提升用户使用应用的体验效果。进一步,同一启动时间等级的多个服务并发启动,以空间换取时间,提升服务启动效率。
图3示出了本发明实施例提供的应用启动装置的结构示意图。如图3所示,该装置包括:
拦截模块310,适于监听应用启动命令,对应用启动命令进行拦截;应用的终端设备为ios终端设备;
抽取查询模块320,适于根据应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务,并查询与应用启动相关联的多个服务的启动时间等级;其中,服务的启动时间等级依据服务与应用框架和/或应用启动过程中的待加载业务之间是否存在的依赖关系而确定;
启动模块330,适于按照各个服务的启动时间等级,将服务依次嵌入启动流程管控,以启动各个服务,完成对应用的启动。
可选地,多个服务包含一个或多个第一服务以及一个或多个第二服务;其中,第一服务为与应用框架之间存在依赖关系的服务,第二服务为与待加载业务之间存在依赖关系的服务;
第一服务的启动时间等级高于第二服务的启动时间等级。
可选地,多个服务还包含一个或多个第三服务;第三服务包括与应用启动时应用首页面的待加载业务之间存在依赖关系的服务;
第三服务的启动时间等级低于第二服务的启动时间等级。
可选地,第三服务还包括与非应用首页面的业务之间存在依赖关系的服务;第三服务根据用户触发的业务场景和/或业务使用诉求启动。
可选地,启动模块330进一步适于:
按照各个服务的启动时间等级,并发启动同一启动时间等级的多个服务;其中,并发启动的服务数量根据终端设备的性能设置。
可选地,抽取查询模块320进一步适于根据应用启动指令,确定待启动应用,获取应用的配置信息和/或网络传输信息;根据应用的配置信息和/或网络传输信息,确定应用启动过程中的待加载业务以及应用框架信息;根据待加载业务进行服务抽取,确定与待加载业务之间存在依赖关系的服务,以及,对应用框架层进行服务抽取,确定与应用框架之间存在依赖关系的服务。
可选地,装置还包括:
更新模块340,适于当应用更新后,获取应用更新相关联的应用框架和/或应用启动过程中的待加载业务;根据应用框架和/或应用启动过程中的待加载业务与各个服务间的依赖关系,更新各个服务的启动时间等级。
可选地,应用的终端设备为ios终端设备。
以上各模块的描述参照方法实施例中对应的描述,在此不再赘述。
根据本发明实施例提供的应用启动装置,对ios终端设备进行监听,拦截应用启动命令,基于应用启动命令进行分层服务抽取,得到应用启动相关联的多个服务。按照服务的启动时间等级依次启动服务,一方面可以解决各个服务均同时启动,多个服务占用资源过多影响服务启动效率等问题;另一方面依据服务与应用框架和/或应用启动过程中的待加载业务之间的依赖关系,按照启动时间等级将启动时间等级高的服务先启动,避免了各个服务同时启动时,启动时间等级低的服务因所需的启动时间等级高的服务未启动成功,导致的启动时间等级低服务无法启动成功、启动时间过长等引起的应用宕机等问题。
本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的应用启动方法。
图4示出了根据本发明实施例的一种计算设备的结构示意图,本发明实施例的具体实施例并不对计算设备的具体实现做限定。
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(communicationsinterface)404、存储器(memory)406、以及通信总线408。
其特征在于:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述应用启动方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行上述任意方法实施例中的应用启动方法。程序410中各步骤的具体实现可以参见上述应用启动实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明实施例的内容,并且上面对特定语言所做的描述是为了披露本发明实施例的较佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明实施例并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其特征在于每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明实施例进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。