CN108089887A - 一种新增页面的启动控制方法及装置 - Google Patents

一种新增页面的启动控制方法及装置 Download PDF

Info

Publication number
CN108089887A
CN108089887A CN201611020336.XA CN201611020336A CN108089887A CN 108089887 A CN108089887 A CN 108089887A CN 201611020336 A CN201611020336 A CN 201611020336A CN 108089887 A CN108089887 A CN 108089887A
Authority
CN
China
Prior art keywords
page
launched
new added
added pages
occupy
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.)
Granted
Application number
CN201611020336.XA
Other languages
English (en)
Other versions
CN108089887B (zh
Inventor
黄定磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201611020336.XA priority Critical patent/CN108089887B/zh
Publication of CN108089887A publication Critical patent/CN108089887A/zh
Application granted granted Critical
Publication of CN108089887B publication Critical patent/CN108089887B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种新增页面的启动控制方法及装置,其中,该方法应用于客户端,客户端能够被应用调用以运行所述启动控制方法,所述应用的宿主程序中声明有占位页面,该启动控制方法包括:客户端拦截所述应用的页面启动操作;判断所述页面启动操作指示的待启动页面是否为新增页面;若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;在所述占位页面被校验通过后,启动所述待启动页面。本申请技术方案正是利用该占位页面为新增页面提供合法身份,在通过系统验证之后,就能够正常启动新增页面。本申请提供的技术方案主要利用预先配置的占位页面为后续的新增页面提供合法背景,以通过系统校验,从而达到支持新增页面启动的目的。

Description

一种新增页面的启动控制方法及装置
技术领域
本申请涉及软件开发技术领域,特别涉及一种基于插件框架实现的新增页面的启动控制方法及装置。
背景技术
近几年,插件技术在软件开发中得到广泛的应用,支持插件技术的软件层出不穷,典型的如各大类型的游戏、图片处理软件、电子商务类软件,等等。当软件发布之后,业务方可以根据实际业务的需求,通过增加插件的方式使软件具备新的功能,这种功能的扩充与增强,能够在提供灵活性的同时,保持原有程序不发生变化。因此,使用插件技术,能够很好地解决软件的功能扩展问题。
所谓插件技术,就是在程序的设计开发过程中,把整个应用程序(也简称为应用,英文缩写APP)分为宿主程序(host)和插件(plug-in)两个部分。宿主程序与插件能够互相通信,而且在宿主程序不变的情况下,可以通过增减或者修改插件来调整应用程序的功能。
目前,在使用插件技术进行软件开发的过程中,若要使软件支持新增页面的展现,则开发人员必须开发新版本的软件,其开发成本较高、开发周期较长,往往无法及时响应业务需求。
发明内容
发明人研究插件技术发现:在利用插件技术开发软件时,必须将相关的页面在宿主程序中配置声明,配置声明的目的在于,操作系统在运行过程中能够从宿主程序中识别出已配置声明的页面是合法的,然后,再正常启动展现所识别出的页面。一旦软件打包发布之后,宿主程序就不能再被修改,则无法再配置声明新页面,则操作系统就将新增页面识别为非法页面,进而阻止该新增页面的启动展现。插件技术的这些特点限制了新增页面的正常启动展现,从而限制了软件的业务可扩展性。
为了适应于软件业务功能频繁更新的技术需求,在本申请中发明人提出了一种基于插件框架实现的新增页面的展现方法,该方法能够使得应用程序在不修改已有插件框架的规范的情况下,支持新增页面的启动展现,从而达到支持软件业务功能及时更新,及时响应业务需求的目的。
为了使得该方法在现实中的应用及实现,本申请还提供了一种基于插件框架实现的新增页面的展现装置。
在本申请第一方面提供了一种新增页面的启动控制方法,所述方法应用于客户端,所述客户端能够被应用调用以运行所述启动控制方法,所述应用的宿主程序中声明有占位页面,所述启动控制方法包括:
所述客户端拦截所述应用的页面启动操作;
判断所述页面启动操作指示的待启动页面是否为新增页面;
若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;
在所述占位页面被校验通过后,启动所述待启动页面。
在本申请第二方面提供了一种新增页面的启动控制装置,所述启动控制装置包括:
拦截模块,用于拦截所述应用的页面启动操作;
判断模块,用于判断所述页面启动操作指示的待启动页面是否为新增页面;
替换模块,用于若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;
启动模块,用于在所述占位页面被校验通过后,启动所述待启动页面。
与现有技术相比,本申请提供的技术方案具有如下优点:
在本申请提供的技术方案中,客户端能够被应用调用以支持应用实现新增页面的启动控制处理,在应用中预先定义占位页面,该占位页面在所述应用的宿主程序中预先配置声明,基于此,系统就能够验证其为合法页面,进而支持其正常启动,在本申请的技术方案中,正是利用该占位页面为新增页面提供合法身份,在通过系统验证之后,就能够正常启动新增页面。
在本申请提供的技术方案中,客户端与应用进行关联,在应用发起页面启动操作时,客户端能够拦截该页面启动操作,然后判断应用的待启动页面是否为一个新增页面,如果是,则将该待启动页面替换为一个占位页面,当系统在验证该待启动页面时,其实际上验证的是一个占位页面,而占位页面是合法的,一定会通过系统验证,在系统验证通过后,就能够正常启动该待启动页面。在本申请技术方案中,预先在应用中为后续可能出现的新增页面的启动配置有占位页面,即,预先配置好合法身份,以使新增页面在启动环节使用该合法身份来通过系统的验证,从而能够被正常启动。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于插件框架开发的应用的结构示意图;图2是本申请实施例提供的一种新增页面的启动控制方法的应用场景图;
图3是本申请实施例提供的一种新增页面的启动控制方法的流程示意图;
图4是本申请实施例提供的一种关于新增页面的判断方法的流程示意图;
图5是本申请实施例提供的一种新增页面的启动控制装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面先对技术方案实现的技术环境进行说明。
普通的系统,在编译发布之后,系统就不允许进行更改或扩充了,如果要进行某个功能的扩充,则必须要修改代码重新编译发布。使用插件系统可以很好地解决这个问题。插件系统的实现,首先是由开发人员编写好插件框架,并预先定义好系统的扩展接口,插件是由其他开发人员根据系统预定的接口编写的扩展功能,实际上就是系统的扩展功能模块,插件都是以独立文件的形式出现。对于插件系统来说并不知道插件的具体功能,仅仅是为插件留下预定的接口,插件系统启动的时候根据插件的配置寻找插件,根据预定的接口把插件挂接到系统中。基于这种特性,如果在应用通过应用市场发布之后,需要对应用的功能进行扩充,就不必重新编写代码重新编译,只需要增加或者修改插件。
基于插件框架开发的应用的结构如图1所示,图1示出的是Android操作系统下的应用的插件化结构,该应用包括:宿主程序(host)和插件(plug-in)两个部分。其中,插件可以有多个,如图1中示出的插件apk1、插件apk2、插件apk3、插件apk4;宿主程序与插件之间能够互相通信,而且在宿主程序不变的情况下,可以通过增减或者修改插件来调整应用的功能。
下面结合实际应用场景对本申请实施例的应用场景环境进行说明。
在电子商务领域中,开发人员往往需要根据实际市场营销活动需求,适应性调整应用的功能,例如:为了推广新的营销活动,需要生成承载该活动的新页面,与应用原有的页面相比,该新页面就是新增页面,但由于现有的插件技术并不支持新增页面的启动,系统会将该新增页面作为非法页面对待,直接阻止该新增页面的启动。基于此,为了满足业务需求,开发人员还得再开发一个新版本的应用,但开发成本较高、开发周期较长,往往在新版本开发成功时,却已错过了营销活动的最佳时机。还有一种应用场景是,开发人员在优化应用时,需要作对比测试,此时,就需要增加新的页面,基于上述同样的原因,开发人员需要发布新的测试版本,无法直接通过现有的插件技术来支持新增页面的启动。
基于类似于上文描述的实际技术需求,发明人研究了已有的插件技术,提出了能够支持新增页面正常启动的方案,该方案能够在不修改已有插件框架的情况下,通过拦截页面启动操作、替换页面的方式,使得应用能够正常启动新增页面。
本申请实施例提供的技术方案应用于客户端,客户端可以是独立的应用程序,还可以是嵌入在应用中的功能模块等,例如,可以是“天猫”、“淘宝”等移动终端App中的功能模块,等等。接下来对本申请实施例提供的具体实现方案进行详细介绍。
实施例一
在该实施例一中,首先提供了一种新增页面的启动控制方法,该方法的应用场景可以参见图2,如图2所示,该启动控制方法应用于客户端201,该客户端201能够被应用202调用以运行所述启动控制方法,该应用202为了支持新增页面的启动,需要预先在宿主程序中声明有占位页面。客户端201介于操作系统与应用202之间,实现关于应用的新增页面的启动控制方法。
在具体实现时,应用202预先配置的占位页面可以是空页面,也可以是具有页面内容的页面。可以理解的是,占位页面是指预先在应用中占据位置、但并非实际业务所对应的页面。另外,在具体实现时,应用可以预先配置一个或者多个占位页面。
在一个示例性的应用场景中,手机天猫APP,在中秋节前夕,要推出关于中秋节活动的促销业务,但该活动页面是独立的业务模块,必须通过独立的页面来承载,因此需要通过在手机天猫APP的插件中配置新增页面,该相应的插件就会升级生成插件升级包,为了使得手机天猫APP能够支持新增页面的启动展现,则该手机天猫APP中就需要预先定义占位页面,该占位页面能够为新增页面的启动展现提供合法背景,以使手机天猫APP支持该新增页面的正常启动。
用户在使用手机天猫APP,看到关于“中秋节活动”的相关提示信息,如首页上以弹层方式展现的“中秋节活动”控件,用户触发该控件,则手机天猫APP接收到该触控请求,就会发起与“中秋节活动”对应的页面的启动操作,一旦该启动操作被发起,就会被客户端拦截,进而由于客户端执行相应的启动控制方法,最终使得该“中秋节活动”的页面在手机天猫APP上正常启动展现。
客户端201具体按照图3所示的流程来实现新增页面的启动控制方法,参见图3,该方法可以包括以下步骤:
S301:客户端拦截所述应用的页面启动操作;
参见图2,客户端201与应用202相关联,主要是为了监测应用发起的页面启动操作,该页面启动操作用于指示待启动页面是哪一个页面,例如,该页面启动操作中携带有待启动页面的页面名称;再例如:该页面启动操作中携带有待启动页面的页面行为(pageaction);根据一个页面的页面行为就能够唯一确定出对应的页面。
在具体实现时,应用发起的页面启动操作除了上文两种形式之外,也可以以携带其他信息的形式来指示当前需要启动的是哪一个页面。
可以理解的是,当客户端与应用相关联后,应用一旦发起关于页面启动操作,就会被客户端拦截,进而该页面启动操作就会转由客户端进行相应处理。
下面以Android系统为例,对具体的拦截处理进行详细说明。
例如:客户端可以拦截应用启动Activity的Instrumentation对象的exec StartActivity方法。每个应用都有一个Instrumentation对象,它用于执行对Activity的具体操作,如构造一个Activity页面对象,启动执行Activity各个生命周期的方法。Instrumentation对象的exec Start Activity方法的作用就是启动Activity页面。因此,客户端通过直接拦截该方法的方式,就能够达到拦截应用的页面启动操作的目的。
当然,客户端实现拦截处理的方式并不局限于上述示例,例如:在Android系统中,客户端还可以通过拦截Activity Manager Native类的方式,实现拦截应用的页面启动操作的功能。该Activity Manager Native类是应用与系统服务交互的入口,上文描述的Instrumentation类用于控制Activity页面的启动,实际上是Instrumentation类直接调用了Activity Manager Native类的相应方法,由Activity Manager Native类通知系统服务去启动页面。Instrumentation类和Activity Manager Native类两者之间是调用与被调用关系。因此,客户端通过拦截Activity Manager Native类的方式同样能够达到拦截到应用的页面启动操作的目的。
此处需要说明的是,在不同的系统中,客户端可以结合系统的页面启动逻辑的特性,来决定具体的拦截方式,本申请实施例的实现并不局限于以上方式。
S302:判断所述页面启动操作指示的待启动页面是否为新增页面;
客户端拦截到页面启动操作,根据该页面启动操作获知待启动页面是哪一个页面,进而需要判断该待启动页面是不是一个新增页面,如果待启动页面是一个新增页面,则客户端需要执行S303和S304。
在具体实现时,为了兼容应用原有的页面启动逻辑,当判断出待启动页面不是一个新增页面,即,待启动页面是应用的原有页面时,则客户端对该待启动页面不作任何处理,而是触发应用执行正常的页面启动操作即可。如图3所示的,当判断为否时,执行步骤S305,客户端触发应用继续执行所述页面启动操作,则应用接收到该触发后,继续启动待启动页面。
在具体实现时,客户端在判断出待启动页面不是一个新增页面时,也可以继续执行S303和S304,即,不乱待启动页面是不是新增页面,都执行以下替换操作。
S303:将所述待启动页面替换为所述占位页面;
S304:在所述占位页面被校验通过后,启动所述待启动页面。
在具体实现时,步骤S304可以按照如下方式实现:
在所述占位页面被校验通过后,将所述占位页面替换为所述待启动页面,以启动所述待启动页面。
例如:在Android系统中,待启动Activity替换成占位Activity之后,由android系统服务AcitivityManagerService进行校验,由于占位页面预先在配置文件中声明过,因此,会被识别为合法页面,通过校验,在通过系统校验之后,在回调回ActivityThread时,该占位Activity就被再次替换回来,替换为原来的待启动Activity,以保证应用发起的页面启动操作被正常执行,即保证待启动页面的正常启动。
将占位页面替换为待启动页面的替换过程如下:
占位Activity通过AcitivityManagerService校验后,使用binder机制回调Activity Thread,通知其启动Activity;拦截代理Activity Thread,获取Activity记录,从中解析得到intent对象;从intent对象中提取到上暂存的待启动Activity类名;以待启动Activity信息重新构造intent和Activityinfo,刷新Activity记录;继续启动Activity,待启动Activity生命周期就会正常运行。
在具体实现时,步骤S304还可以按照如下方式实现:
在所述占位页面被校验通过后,控制所述占位页面调用所述待启动页面对应的方法,以启动所述待启动页面。
例如:在Android系统中,可以在占位activity通过了android系统服务AcitivityManagerService校验之后,不再替换回来,转而使用占位activtiy去代理执行待启动activity的方法,以达到待启动页面(新增页面)正常启动运行的效果。
在本申请实施例中,客户端通过拦截、判断操作发现待启动页面是一个新增页面时,客户端将待启动页面替换为占位页面之后,触发系统继续执行页面启动操作,此时,就需要触发系统服务执行校验,由于待启动页面已替换为占位页面,因此,系统服务校验的对象就是占位页面,而占位页面在应用的宿主程序中已有配置声明,因此,此次验证一定会通过,在验证通过后,就可以执行正常的页面启动操作,从而达到启动新增页面的效果。
关于如何实现上文描述的步骤S302“判断所述页面启动操作指示的待启动页面是否为新增页面”,本申请实施例还提供了具体实现方式,下面对该方式进行详细介绍。
参见图4,该判断方法可以包括以下步骤:
S401:判断所述应用是否关联有升级插件包;若所述应用关联有升级插件包,则触发S402,否则,触发S405直接确定该待启动页面不是新增页面,此时就可以正常启动该待启动页面。
在具体实现时,客户端可以通过识别插件包中的升级标识,来识别出插件包是否为升级插件包。在具体实现时,客户端可以遍历性地判断与应用关联的所有插件包,以判断出插件包是否为升级插件包;由于,一个应用实际关联的插件最多有几十个,因此,这种遍历性地判断逻辑较简单,便于实现。
在具体实现时,客户端也可以先识别出与待启动页面相关的插件包,然后,再针对性地识别该与待启动页面相关的插件包是否为升级插件包。若采用这种方式,则插件包在升级时,还需要配置有页面配置文件,在该页面配置文件中描述有页面的相关信息,则客户端可以通过页面配置文件来识别出待启动页面与哪个插件包相关联。
S402:解析所述升级插件包,并将解析得到新增页面的相关信息记录在新增页面表中;
在具体实现时,可以按照如下方式实现S402:
解析所述升级插件包得到配置清单;
检测所述配置清单中的页面是否能够被系统服务响应;
将不被系统服务响应的页面标记为新增页面;以及,
统计所述新增页面的相关信息生成新增页面表。
例如:在Android系统中,通过系统类Package Parse解析插件包配置Manifest;通过系统服务package Manager Service检测是否有Intent可以响应Activity,如果有响应,则表明该Activity是原有的,如果没有响应,则表明该Activity是新增的,进而根据检测结果可以得到一个新增页面列表,在该新增页面列表中记录有关于该插件的新增页面的相关信息。
S403:匹配所述待启动页面的相关信息与所述新增页面的相关信息;若匹配成功,则触发S404;若匹配失败,则触发S405。
待启动页面的相关信息与任何一个新增页面的相关信息相匹配,则表明匹配成功,否则,表明匹配失败。
S404:确定所述待启动页面是新增页面。
本申请实施例针对不同形式的页面启动方式,提供了可选的匹配方式。一种页面启动方式是显式启动方式,另一种页面启动方式是隐式启动方式。
其中,显示启动方式会明确指示待启动页面是哪一个页面,例如,表明待启动页面的页面名称。针对这种显示启动方式,则步骤S403具体可以按照如下方式实现:
匹配所述待启动页面的页面名称与所述新增页面表中的新增页面的页面名称,如果名称相似或者一致,则表明匹配成功。
其中,隐式启动方式并不会直接指示是哪一个页面,而是会表明待启动页面的页面行为(page action),由系统根据页面行为来识别出具体的待启动页面。针对这种隐式启动方式,则步骤S403具体可以按照如下方式实现:
根据所述新增页面的意图过滤元素生成所述新增页面的过滤器;以及,利用所述新增页面的过滤器过滤所述待启动页面,如果过滤通过,则表明所述待启动页面与所述新增页面匹配成功。
例如:在Android系统中,解析每个新增Activity的Intent Filter,生成过滤器;通过过滤器循环遍历过滤处理,以确定出待启动页面是否与哪一个新增页面相匹配。
经过步骤S403的匹配处理后,如果待启动页面与某一个新增页面相匹配,则表明该待启动页面就是一个新增页面。否则,表明待启动页面并非是新增页面。
发明人经过研究发现,基于插件框架,当应用有新的需求,需要新增页面时,必须通过插件包升级的方式来实现,因此,当插件有新增页面时,应用一定是有插件包升级,但应用有插件包升级,不代表应用一定有新增页面,也可能是原有页面的参数修改、页面逻辑修改而已。因此,通过应用是否有插件升级包就能够间接地判断出应用是否有新增页面,当判断出有新增页面时,再判断当前需要启动的页面是不是一个新增页面,进而决定是否要进行后续的替换逻辑。
考虑到在实际应用中系统可能会支持不同的页面启动模式,因此,为了支持系统的原生开发模式,本申请实施例提出了对应的解决方案,该解决方案兼容了不同的页面启动模式,使得应用能够支持不同启动模式的新增页面的启动。
该解决方案在具体实现时,应用202预先定义多组不同启动模式的占位页面,一组占位页面可以包括:一个或多个同一启动模式的占位页面。即,应用的宿主程序中声明有多组不同启动模式的占位页面;在这种设置环境下,
则上文描述的步骤S303:将所述页面启动操作指示的待启动页面替换为所述占位页面,具体可以按照如下方式实现:
从所述多组不同启动模式的占位页面中,选择与所述待启动页面的启动模式相同的一个占位页面;以及,将所述待启动页面替换为被选择的占位页面。
通过该解决方案,客户端服务于应用,既能够达到同时支持多个新增页面运行的目的,又能够遵循系统原有开发模式,支持不同启动模式的新增页面的运行。
下面以Android系统为例,对上述解决方案进行示例说明。
例如:在Android系统中启动模式(Launch mode)在多个页面(Activity)跳转过程中发挥着重要的作用,它可以决定是否生产新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个任务堆栈(task)。一般情况下开发人员需要预先在Android Manifest.xml配置<activity>的Android:launchMode属性,从而定义好Activity的具体启动模式。基于此,可以根据待启动Activity的Launch Mode,选择相应相同Launch Mode的占位Activity,从而实现替换。
一般情况下,Activity可以有四种Launch Mode,分别是:standard、singleTop、singleTask以及singleInstance。下面分别对这几种启动模式进行介绍:
在Standard启动模式下,Activity可以拥有多个实例,并且这些实例既可以位于同一个task,也可以位于不同的task。
在singleTop启动模式下,在同一个task中,如果存在该启动模式的Activity实例,并且该Activity实例位于栈顶(即,该Activity位于前端),则在调用startActivity()时,不再创建该Activity的实例;而仅仅只是调用Activity的onNewIntent(),否则,新建该Activity的实例,并将其置于栈顶。
在singleTask启动模式下,如果是第一次创建该启动模式的Activity实例时,则会新建task并将该Activity添加到该task中,否则(该启动模式的Activity的实例已存在),则会打开已有的Activity实例,并调用Activity的onNewIntent()方法,而不会新建Activity实例。在任意时刻,最多只会有一个该Activity实例存在。
在singleInstance启动模式下,只允许有一个Activity实例,当第一次创建该Activity实例时,会新建一个task(即任务堆栈)并将该Activity添加到该task中。而该task只能容纳该Activity实例,不会再添加其他的Activity实例,如果该Activity实例已经存在于某个task,则直接跳转到该task。
基于上述不同启动模式所具备的特点,步骤S303在具体实现时,可以先判断待启动页面的launch Mode,然后,再根据判断结果执行对应的操作:
当待启动页面的launch Mode为standard时,则直接选取一个standard的占位Activity,然后再执行替换操作。
当待启动页面的launch Mode为singleTop时,则先判断栈顶部是否有运行同一Activity,如果有,直接复用其对应占位Activity;否则,如果singleTop的占位Activity还有剩余时,直接分配一个新的singleTop的占位Activity,如果singleTop的占位Activity没有剩余,则回收最先被使用时singleTop的占位Activity,再重复使用该占位Activity,然后再执行替换操作。
当待启动页面的launch Mode为singleTask时,则先判断任务栈中是否已存在该Activity实例,如果有,直接复用其对应的占位Activity,否则,如果singleTask的占位Activity还有剩余时,直接分配一个新的singleTask的占位Activity,如果singleTask的占位Activity没有剩余,则回收最先被使用的singleTask的占位Activity,再重复使用该占位Activity,然后再执行替换操作。
当待启动页面的launch Mode为singleInstance时,则先判断任务栈中是否已存在该Activity实例,如果有,直接复用其对应的占位Activity,否则,如果singleInstance的占位Activity还有剩余时,直接分配一个新的singleInstance的占位Activity,在独立的task中(即任务堆栈),如果singleInstance的占位Activity没有剩余,则回收最先被使用的singleInstance的占位Activity,再重复使用该占位Activity,然后再执行替换操作。
通过上文描述的内容可以看出:本申请实施例提供的新增页面的启动控制方法,遵循已有的插件框架,在不对原有系统进行修改的情况下,使得插件技术能够兼容新增页面的启动展现,从而使得插件技术能够很好地适应不同的业务需求。
在本申请实施例提供的技术方案中,客户端能够被应用调用以支持应用实现新增页面的启动控制处理,在应用中预先定义占位页面,该占位页面在所述应用的宿主程序中预先配置声明,即,预先为后续出现的新增页面配置好合法身份,基于此,当应用有新增页面启动的需求时,该新增页面就会使用占位页面的合法身份,从而通过系统的校验,系统在验证其为合法页面之后,支持其正常启动,在本申请的技术方案中,正是利用该占位页面为新增页面提供合法身份,在通过系统验证之后,就能够正常启动新增页面。
与上述方法相对应的,本申请实施例还提供了一种新增页面的启动控制装置,下面结合图5对该装置进行解释说明。
实施例二
参见图5,该装置可以包括以下模块:
拦截模块501,用于拦截所述应用的页面启动操作;
判断模块502,用于判断所述页面启动操作指示的待启动页面是否为新增页面;
替换模块503,用于若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;
启动模块504,用于在所述占位页面被校验通过后,启动所述待启动页面。
在具体实现时,所述判断模块,可以包括:
判断子模块,用于判断所述应用是否关联有升级插件包;若所述应用关联有升级插件包,则触发解析子模块;
解析子模块,用于解析所述升级插件包,并将解析得到新增页面的相关信息记录在新增页面表中;
匹配子模块,用于匹配所述待启动页面的相关信息与所述新增页面的相关信息;若匹配成功,则触发确定子模块;
确定子模块,用于确定所述待启动页面是新增页面。
在具体实现时,所述解析子模块,可以包括:
配置清单解析子模块,用于解析所述升级插件包得到配置清单;
服务响应检测子模块,用于检测所述配置清单中的页面是否能够被系统服务响应;
标记子模块,用于将不被系统服务响应的页面标记为新增页面;
统计子模块,用于统计所述新增页面的相关信息生成新增页面表。
在具体实现时,所述匹配子模块,可以包括:
页面名称匹配子模块,用于匹配所述待启动页面的页面名称与所述新增页面表中的新增页面的页面名称。
在具体实现时,所述匹配子模块,可以包括:
过滤器生成子模块,用于根据所述新增页面的意图过滤元素生成所述新增页面的过滤器;
过滤子模块,用于利用所述新增页面的过滤器过滤所述待启动页面,如果过滤通过,则表明所述待启动页面与所述新增页面匹配成功。
在具体实现时,所述启动模块,可以包括:
恢复子模块,用于在所述占位页面被校验通过后,将所述占位页面替换为所述待启动页面,以启动所述待启动页面。
在具体实现时,所述启动模块,可以包括:
调用子模块,用于在所述占位页面被校验通过后,控制所述占位页面调用所述待启动页面对应的方法,以启动所述待启动页面。
在具体实现时,所述应用的宿主程序中声明有多组不同启动模式的占位页面;则所述替换模块,可以包括:
选择子模块,用于从所述多组不同启动模式的占位页面中,选择与所述待启动页面的启动模式相同的一个占位页面;
替换子模块,用于将所述待启动页面替换为被选择的占位页面。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种新增页面的启动控制方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种新增页面的启动控制方法,其特征在于,应用于客户端,所述客户端能够被应用调用以运行所述启动控制方法,所述应用的宿主程序中声明有占位页面,所述启动控制方法包括:
所述客户端拦截所述应用的页面启动操作;
判断所述页面启动操作指示的待启动页面是否为新增页面;
若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;
在所述占位页面被校验通过后,启动所述待启动页面。
2.根据权利要求1所述的启动控制方法,其特征在于,所述判断所述页面启动操作指示的待启动页面是否为新增页面,包括:
判断所述应用是否关联有升级插件包;
若所述应用关联有升级插件包,则解析所述升级插件包,并将解析得到新增页面的相关信息记录在新增页面表中;
匹配所述待启动页面的相关信息与所述新增页面的相关信息;
若匹配成功,则确定所述待启动页面是新增页面。
3.根据权利要求2所述的启动控制方法,其特征在于,所述解析所述升级插件包,并将解析得到新增页面的相关信息记录在新增页面表中,包括:
解析所述升级插件包得到配置清单;
检测所述配置清单中的页面是否能够被系统服务响应;
将不被系统服务响应的页面标记为新增页面;
统计所述新增页面的相关信息生成新增页面表。
4.根据权利要求2所述的启动控制方法,其特征在于,所述匹配所述待启动页面的相关信息与所述新增页面的相关信息,包括:
匹配所述待启动页面的页面名称与所述新增页面表中的新增页面的页面名称。
5.根据权利要求2所述的启动控制方法,其特征在于,所述匹配所述待启动页面的相关信息与所述新增页面的相关信息,包括:
根据所述新增页面的意图过滤元素生成所述新增页面的过滤器;
利用所述新增页面的过滤器过滤所述待启动页面,如果过滤通过,则表明所述待启动页面与所述新增页面匹配成功。
6.根据权利要求1所述的启动控制方法,其特征在于,所述在所述占位页面被校验通过后,启动所述待启动页面,包括:
在所述占位页面被校验通过后,将所述占位页面替换为所述待启动页面,以启动所述待启动页面。
7.根据权利要求1所述的启动控制方法,其特征在于,所述在所述占位页面被校验通过后,运行所述待启动页面,包括:
在所述占位页面被校验通过后,控制所述占位页面调用所述待启动页面对应的方法,以启动所述待启动页面。
8.根据权利要求1所述的启动控制方法,其特征在于,所述应用的宿主程序中声明有多组不同启动模式的占位页面;
则所述将所述页面启动操作指示的待启动页面替换为所述占位页面,包括:
从所述多组不同启动模式的占位页面中,选择与所述待启动页面的启动模式相同的一个占位页面;
将所述待启动页面替换为被选择的占位页面。
9.一种新增页面的启动控制装置,其特征在于,所述启动控制装置包括:
拦截模块,用于拦截所述应用的页面启动操作;
判断模块,用于判断所述页面启动操作指示的待启动页面是否为新增页面;
替换模块,用于若所述待启动页面是新增页面,则将所述待启动页面替换为所述占位页面;
启动模块,用于在所述占位页面被校验通过后,启动所述待启动页面。
10.根据权利要求9所述的启动控制装置,其特征在于,所述判断模块,包括:
判断子模块,用于判断所述应用是否关联有升级插件包;若所述应用关联有升级插件包,则触发解析子模块;
解析子模块,用于解析所述升级插件包,并将解析得到新增页面的相关信息记录在新增页面表中;
匹配子模块,用于匹配所述待启动页面的相关信息与所述新增页面的相关信息;若匹配成功,则触发确定子模块;
确定子模块,用于确定所述待启动页面是新增页面。
CN201611020336.XA 2016-11-18 2016-11-18 一种新增页面的启动控制方法及装置 Active CN108089887B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611020336.XA CN108089887B (zh) 2016-11-18 2016-11-18 一种新增页面的启动控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611020336.XA CN108089887B (zh) 2016-11-18 2016-11-18 一种新增页面的启动控制方法及装置

Publications (2)

Publication Number Publication Date
CN108089887A true CN108089887A (zh) 2018-05-29
CN108089887B CN108089887B (zh) 2021-05-18

Family

ID=62169238

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611020336.XA Active CN108089887B (zh) 2016-11-18 2016-11-18 一种新增页面的启动控制方法及装置

Country Status (1)

Country Link
CN (1) CN108089887B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241296A (zh) * 2019-07-17 2021-01-19 北京密境和风科技有限公司 一种应用中的页面切换方法、装置
CN113391856A (zh) * 2021-06-25 2021-09-14 北京字节跳动网络技术有限公司 跨任务栈的页面处理方法、装置、设备及介质
CN114675897A (zh) * 2020-12-24 2022-06-28 荣耀终端有限公司 一种应用程序的启动方法及相关装置
WO2024114122A1 (zh) * 2022-11-28 2024-06-06 天津华来科技股份有限公司 在编译时替换启动页面的方法、电子设备、储存介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286120A (zh) * 2008-05-28 2008-10-15 北京中企开源信息技术有限公司 一种网站页面的制作方法和系统
US20090115494A1 (en) * 2007-11-07 2009-05-07 Orlando Consuelo Charge pump warm-up current reduction
US20110022984A1 (en) * 2009-01-23 2011-01-27 Palm, Inc. Selective Plug-In Activation For Resource-Limited Platforms
CN102007509A (zh) * 2008-04-14 2011-04-06 微软公司 通过基于web的桌面生产力应用程序来插入多媒体文件
GB2475278A (en) * 2009-11-12 2011-05-18 Powershift Systems Self-contained interactive framework for third-party content on webpages
US20120317295A1 (en) * 2011-06-07 2012-12-13 Cisco Technology, Inc. Distributed Overlay Browser For Transparent Streaming Media Support In Virtualized Desktop Environment
CN102968312A (zh) * 2011-12-20 2013-03-13 微软公司 用于应用扩展程序的用户界面占位符
CN104731869A (zh) * 2015-02-28 2015-06-24 百度在线网络技术(北京)有限公司 页面的展现方法及装置
CN105389299A (zh) * 2015-10-13 2016-03-09 广州视睿电子科技有限公司 一种页面生成方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090115494A1 (en) * 2007-11-07 2009-05-07 Orlando Consuelo Charge pump warm-up current reduction
CN102007509A (zh) * 2008-04-14 2011-04-06 微软公司 通过基于web的桌面生产力应用程序来插入多媒体文件
CN101286120A (zh) * 2008-05-28 2008-10-15 北京中企开源信息技术有限公司 一种网站页面的制作方法和系统
US20110022984A1 (en) * 2009-01-23 2011-01-27 Palm, Inc. Selective Plug-In Activation For Resource-Limited Platforms
GB2475278A (en) * 2009-11-12 2011-05-18 Powershift Systems Self-contained interactive framework for third-party content on webpages
US20120317295A1 (en) * 2011-06-07 2012-12-13 Cisco Technology, Inc. Distributed Overlay Browser For Transparent Streaming Media Support In Virtualized Desktop Environment
CN102968312A (zh) * 2011-12-20 2013-03-13 微软公司 用于应用扩展程序的用户界面占位符
CN104731869A (zh) * 2015-02-28 2015-06-24 百度在线网络技术(北京)有限公司 页面的展现方法及装置
CN105389299A (zh) * 2015-10-13 2016-03-09 广州视睿电子科技有限公司 一种页面生成方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241296A (zh) * 2019-07-17 2021-01-19 北京密境和风科技有限公司 一种应用中的页面切换方法、装置
CN112241296B (zh) * 2019-07-17 2024-03-22 北京密境和风科技有限公司 一种应用中的页面切换方法、装置
CN114675897A (zh) * 2020-12-24 2022-06-28 荣耀终端有限公司 一种应用程序的启动方法及相关装置
CN113391856A (zh) * 2021-06-25 2021-09-14 北京字节跳动网络技术有限公司 跨任务栈的页面处理方法、装置、设备及介质
CN113391856B (zh) * 2021-06-25 2022-04-15 北京字节跳动网络技术有限公司 跨任务栈的页面处理方法、装置、设备及介质
WO2024114122A1 (zh) * 2022-11-28 2024-06-06 天津华来科技股份有限公司 在编译时替换启动页面的方法、电子设备、储存介质

Also Published As

Publication number Publication date
CN108089887B (zh) 2021-05-18

Similar Documents

Publication Publication Date Title
US10705811B2 (en) Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources, like mobile devices or TV set top boxes
US10303590B2 (en) Testing functional correctness and idempotence of software automation scripts
US9996374B2 (en) Deployment and installation of updates in a virtual environment
US10636084B2 (en) Methods and systems for implementing on-line financial institution services via a single platform
US20070220492A1 (en) Application verifier infrastructure and checks
CN108089887A (zh) 一种新增页面的启动控制方法及装置
JP6788178B2 (ja) 設定支援プログラム、設定支援方法及び設定支援装置
CN104885092A (zh) 用于操作系统的安全系统和方法
CN104461594B (zh) 嵌入式操作系统的升级方法及装置
CN105164644A (zh) 钩子框架
CN103019941B (zh) 程序调试方法和装置
US20150186126A1 (en) System and Method of Automating Installation of Applications
CN102592086A (zh) 在沙箱中浏览网页方法及装置
Wang et al. Characterizing and detecting bugs in wechat mini-programs
CN102456113A (zh) 一种软件包编译平台针对用户设置权限的方法
Riganelli et al. Controlling interactions with libraries in android apps through runtime enforcement
CN104598812B (zh) 在沙箱中浏览网页方法及装置
CN104239112A (zh) 一种设备驱动程序安装方法及装置
CN106022125B (zh) 一种客户端的修复方法及装置
CN114996955A (zh) 一种云原生混沌工程实验的靶场环境构建方法及装置
CN104572199B (zh) 一种禁止启动项启动的方法和装置
CN106815519A (zh) 一种应用升级方法及终端
CN113282363A (zh) 一种优化混合app的方法及装置
CN110825417A (zh) 应用程序更新方法及系统
RU2521265C2 (ru) Система и способ автоматической обработки системных ошибок программного обеспечения

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1256074

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant