一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

小程序控制方法及装置与流程

2022-07-13 10:59:04 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,具体涉及一种小程序控制方法及装置。


背景技术:

2.小程序启动运行后,会将页面栈和运行环境保存在内存中。页面栈、运行环境和一些必要参数构成小程序实例。页面栈可能包括多个页面,与小程序打开的页面数量有关。运行环境包括小程序运行状态,比如页面操作状态。
3.在小程序运行过程中,如果点击关闭按钮,小程序实例会从前台进入后台,小程序实例的页面栈也会进入后台。如果再次打开该小程序,系统发现内存中存有该小程序的实例,则小程序实例从后台再次进入前台,小程序实例的页面栈也将再次展示于前台,且恢复之前的运行状态。这种后台恢复机制,可以很好地保留当初用户的执行态,并从第二次开始加速启动小程序的页面。
4.以上关闭小程序后再打开小程序是没有问题的。但是,如果没有关闭小程序,即小程序实例仍然在前台时,若通过推送页面等各种小程序入口再次进入该小程序时,则由于内存中存有该小程序的实例,会将内存中存储的该小程序的实例的页面栈展示于前台,并恢复之前的运行状态。由于一个小程序实例对应一个页面栈,因此,实际上页面栈此时已经放入了前台页面堆栈的最前端,但是由于再次打开小程序时之前运行的小程序尚未关闭,系统认为前台页面堆栈中原位置仍然存在该小程序的实例的页面栈,从而在点击回退按钮时出现错误。
5.为解决上述问题,有的客户端在运行小程序的时候,直接通过产品设计阻拦用户再次打开同一个小程序来规避该问题,但这样处理无疑大大降低了使用的自由度,且用户体验很差。


技术实现要素:

6.本发明实施例提供一种小程序控制方法,包括:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例;响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台;响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
7.根据本发明实施例提供的一种小程序控制方法,所述根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,包括:根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识。
8.根据本发明实施例提供的一种小程序控制方法,所述方法还包括:响应于接收到小程序实例关于所述小程序标识的获取请求,根据所述小程序实例获取对应的小程序实例
标识,判断所述小程序实例标识是否具有所述预设标记;响应于所述小程序实例标识具有所述预设标记,确认所述小程序实例标识为所述第二小程序实例标识,根据所述第二小程序实例标识获取所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识,将所述小程序标识返回给所述小程序实例。
9.根据本发明实施例提供的一种小程序控制方法,所述方法还包括:响应于所述小程序实例标识不具有所述预设标记,确认所述小程序实例标识为所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识并返回给所述小程序实例。
10.根据本发明实施例提供的一种小程序控制方法,所述根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识,包括:通过按照预设顺序组合所述第一小程序实例标识、所述随机数及所述预设标记生成所述第二小程序实例标识。
11.根据本发明实施例提供的一种小程序控制方法,所述第二小程序实例标识中的所述第一小程序实例标识、所述随机数及所述预设标记通过间隔符号隔开;所述根据所述第二小程序实例标识获取所述第一小程序实例标识,包括:识别所述第二小程序实例标识中的所述间隔符号,并根据所述第一小程序实例标识、所述随机数及所述预设标记排列的所述预设顺序截取所述第一小程序实例标识。
12.根据本发明实施例提供的一种小程序控制方法,所述判断所述小程序实例在前台还是在后台,包括:根据与所述小程序实例对应的状态参数的值判断所述小程序实例在前台还是在后台;其中,小程序实例进入前台后,所述状态参数取值为逻辑1;小程序实例进入后台后,所述状态参数取值为逻辑0。
13.本发明实施例还提供一种小程序控制装置,包括:请求接收模块,用于:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;第一判断模块,用于:根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例;第二判断模块,用于:响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台;控制模块,用于:响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
14.本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述小程序控制方法的步骤。
15.本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述小程序控制方法的步骤。
16.本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述小程序控制方法的步骤。
17.本发明实施例提供的小程序控制方法及装置,通过在接收到打开小程序的用户触发请求后,若获知当前存在该小程序的实例在前台运行,则生成新的小程序实例标识,并重启小程序,建立新的小程序实例标识和重启后的小程序实例的绑定关系,在再次打开小程序时,实现了同一小程序的不同小程序实例之间独立运行,避免了对前台已运行的小程序实例的干扰,解决了页面栈不可操作的问题,提高了小程序使用的可靠性、提高了小程序的
扩展能力,增强了用户体验。
附图说明
18.为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是前台页面堆栈的状态变化示意图之一;
20.图2是前台页面堆栈的状态变化示意图之二;
21.图3是本发明实施例提供的小程序控制方法的流程示意图;
22.图4是前台页面堆栈的状态变化示意图之三;
23.图5是本发明实施例提供的小程序控制方法中小程序实例标识和小程序实例的映射关系示意图;
24.图6是本发明实施例提供的小程序控制装置的结构示意图;
25.图7是本发明实施例提供的电子设备的结构示意图。
具体实施方式
26.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.图1是前台页面堆栈的状态变化示意图之一。其中,前台页面堆栈包括显示于前台的页面的集合,可以包括小程序的页面栈,还可以包括其他页面。如图1所示,在小程序运行过程中,如果点击关闭按钮,小程序实例会从前台进入后台。由于页面栈是小程序实例的组成部分,因此,表现为小程序实例的页面栈收入后台。小程序实例无论是在前台运行还是收入后台,页面栈和运行环境始终是存储于内存的。图1中,一个长方形表示一个页面,其中页面0表示初始时用户能看到的业务页面。页面1、页面2和页面3表示小程序实例的页面栈中的页面。用户只能看到最前端的页面。其中,页面1表示小程序的初始化页面。
28.当用户打开小程序的时候,即请求在前台展示小程序的页面,小程序sdk会判断内存里有没有该小程序的实例,如果没有,则启动小程序,启动小程序的过程中会新建该小程序的实例。如果内存里有该小程序的实例,则取出小程序实例的页面栈,并展示在前台页面堆栈的最上方。
29.在大多数场合下,该方案是没问题的。而且因为有后台恢复机制,所以能很好的保留当初用户的执行态,并从第二次开始可以加速启动小程序的页面。
30.发明人发现如果没有关闭小程序,即小程序实例仍然在前台时,若通过推送页面等各种小程序入口再次进入该小程序时,则由于内存中存有该小程序的实例,会将内存中存储的页面栈展示于前台,并恢复之前的运行状态。由于一个小程序实例对应一个页面栈,因此,实际上页面栈此时已经放入了前台页面堆栈的最前端,但是由于再次打开小程序时之前运行的同一小程序尚未关闭,系统认为前台页面堆栈中原位置仍然存在该小程序的实例的页面栈,而实际上不存在,从而在点击回退按钮时出现错误。
31.图2是前台页面堆栈的状态变化示意图之二。下面结合图2通过举例说明上述问题。
32.用户在使用会议小程序预定会议,预订成功后,会对所有参会人员包含预定用户发一个推送,而该推送点击时会打开一个会议列表页面,该页面里面有进入会议小程序的入口。当用户再从该页面打开会议小程序时,小程序sdk(software development kit,软件开发工具包)判断内存里有该小程序的实例,则会直接把小程序实例的页面栈放在最上方。整个流程里的页面栈变化过程如图2所示。
33.图2中页面4即通过推送打开的会议列表页。从图2可以比较明显的看到,第四步的时候,又把本应该在会议列表页面后面的小程序实例的页面栈拉到了最前面。此时如果用户一路点击返回,当回退到从会议列表页再点击返回的时候,就会发生不可预料的错误,通常表现是之后的页面不再可操作。原因是ui(user interface,用户界面)表现上sdk已经把之前的小程序实例的页面栈放到了前台页面堆栈的最前端,但是实际系统理解前台页面堆栈里小程序实例的页面栈在原位置也存有一份,由此导致错误。
34.本发明实施例提供一种小程序控制方法,可以很好地解决上述问题。
35.小程序的运行架构包括view(视图)层、app service(逻辑层)和native(系统)层。其中,view层用于小程序的页面渲染,app service层用于执行小程序的脚本,native层用于实现view层和service层的通信,并提供app的原生能力。本发明实施例提供的小程序控制方法,可以实现于native层。
36.图3是本发明实施例提供的小程序控制方法的流程示意图。如图3所示,所述方法包括:
37.步骤101、接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括所述小程序的小程序标识。
38.接收打开小程序的用户触发请求。打开小程序包括小程序实例在后台时拉取到前台,以及新启动小程序。打开小程序的用户触发请求包括小程序的小程序标识。小程序标识用于标识不同的小程序。打开小程序的用户触发请求比如可以通过链接发起,或者比如可以通过点击小程序的图标发起。在点击链接或点击图标等方式发起打开小程序的用户触发请求时,打开小程序的用户触发请求携带该小程序的小程序标识。
39.小程序标识比如可以利用appid表示。在同一种小程序区分不同版本的时候,小程序标识比如可以采用appid和小程序的md5值共同表示。
40.md5信息摘要算法(md5 message-digest algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。若小程序的版本不同,即小程序的代码不同,则生成的md5值将不同。
41.步骤102、根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例。
42.小程序实例标识用于标识小程序实例。启动的小程序将以小程序实例的方式运行,并在内存中和对应的小程序实例标识对应存储。第一小程序实例是系统对于小程序的小程序实例最初设定的标识。第一小程序实例可以基于小程序标识构建,可以与小程序标识相同或不同。可以根据小程序标识得到第一小程序实例标识。
43.判断内存中是否存在第一小程序实例标识对应的小程序实例,实际是判断内存中
是否存在第一小程序实例标识。若内存中存在第一小程序实例标识,则表示内存中存在第一小程序实例标识对应的小程序实例,可以通过第一小程序实例标识和小程序实例的映射关系获取对应的小程序实例。
44.步骤103、响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台。
45.若内存中存在第一小程序实例标识对应的小程序实例,则此时小程序实例可能在前台运行也可以收于后台。因此,进一步判断小程序实例在前台还是在后台,从而获知小程序实例的状态。小程序实例进入前台会调用进入前台的方法,小程序实例进入后台会调用进入后台的方法,因此,可以通过小程序实例调用进入前台的方法及调用进入后台的方法的时机得到小程序实例在前后台的状态变化并记录。可以根据记录的小程序实例在前后台的状态变化结果判断小程序实例在前台还是在后台。
46.小程序实例在前台当前不一定可见,比如在小程序实例的页面栈展示的时候又打开了别的页面,则由于此时未关闭小程序,小程序实例仍然是在前台,可以通过回退等方式回到小程序页面。如果关闭小程序,则小程序实例将会收入后台,无法通过回退的方式回到小程序页面。
47.步骤104、响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
48.如果小程序实例在前台,说明当前待打开的小程序的小程序实例已在前台运行,小程序的页面可能可见,也可能不可见。为避免出现页面栈异常问题,本发明实施例在获知小程序实例在前台后,为避免对已经运行的同一小程序造成影响,生成不会重复的随机数,根据生成的随机数及第一小程序实例标识生成第二小程序实例标识。比如,可以通过组合随机数及第一小程序实例标识生成第二小程序实例标识。随机数及第一小程序实例标识之间可以设置间隔符号。可以根据uuid(universally unique identifier,通用唯一识别码)技术生成不重复的随机数。
49.第一小程序实例标识和第二小程序实例标识是两种类型的小程序实例标识。其中,第一小程序实例标识是小程序设计时预先设置好的小程序实例标识。第二小程序实例标识则是后期根据第一小程序实例标识重新生成的。在多次打开小程序的场景下,均可以通过上述方法生成第二小程序实例标识,生成的多个第二小程序实例标识由于基于不同的随机数,因此也互不相同。
50.如果小程序实例在前台,则表示该小程序至少进行了一次启动。若小程序实例在前台,本发明实施例在接收到再次打开小程序的用户触发请求后,将重新启动小程序。小程序多次启动的过程可以采用相同的方式,启动后显示的页面也是完全相同的。
51.小程序的启动可以是根据第一小程序实例标识重新启动小程序。根据第一小程序实例标识启动和重新启动小程序的过程是相同的。根据第一小程序实例标识启动小程序的过程可以包括:根据第一小程序实例标识获取小程序的启动文件,其中小程序的启动文件包括脚本文件,创建一个新的运行环境,并通过执行脚本文件生成小程序的页面栈,页面栈包括小程序的启动页面。根据小程序的页面栈及创建的运行环境得到小程序启动时的小程序实例。根据所创建的运行环境将小程序的页面栈展示于前台,从而完成小程序的启动。小
程序启动完成后可以返回一个启动成功的信息。
52.用于启动小程序的小程序实例生成后,建立启动的小程序的小程序实例和小程序实例标识的绑定关系。小程序实例随着后期的操作将不断更新。
53.用于初次启动小程序的小程序实例生成后,建立初次启动的小程序的小程序实例和第一小程序实例标识的绑定关系。因此,在再次启动小程序时,若内存中包含该小程序的第一小程序实例标识,说明内存中存储有与第一小程序实例标识对应的小程序实例。
54.为避免小程序实例在前台运行的情况下再次启动小程序时,将小程序实例的页面栈拉到前台,从而造成点击回退按钮时无法操作的情况,本发明实施例在发现小程序实例在前台运行时,生成第二小程序实例标识,重新启动小程序,并建立重新启动的小程序的小程序实例和第二小程序实例标识的绑定关系存储于内存。也即,对应同一小程序,实现至少两套小程序实例的独立运行,互不影响。
55.为保证生成的第二小程序实例标识与其他小程序实例不重复,通过生成不重复的随机数,根据生成的随机数及第一小程序实例标识生成第二小程序实例标识,比如通过组合第一小程序实例标识和生成的随机数得到第二小程序实例标识。
56.这样,初次启动的小程序的小程序实例和第一小程序实例标识对应存储,再次启动该小程序后,重新启动的小程序的小程序实例和第二小程序实例标识对应存储,实现同一小程序的不同实例分别独立运行。
57.本发明实施例通过修改小程序实例在前台运行时,再次打开小程序时的操作,可以实现在用户使用小程序的过程中,如果通过推送方式再次打开小程序时,可以通过推送里附带的信息打开一个重启小程序,环境和数据均由打开时的启动参数决定。用户在重启后的小程序里面进行的所有操作不会影响到原来运行的小程序,达成至少两个小程序实例的状态隔离。用户在重启后的小程序的实例中使用返回或者关闭小程序能力时,能够回到原来运行的小程序实例,并且原来运行的小程序实例保持当时的状态。
58.图4是前台页面堆栈的状态变化示意图之三。如图4所示,采用本发明实施例提供的方法后,当从会议列表页打开小程序时,将重启小程序,依次显示了小程序的初始化页面1,及后续操作得到的页面5和页面6。用户一路点击回退按钮时,可以回退到原来运行的小程序实例的页面栈,解决了页面栈不可操作的问题,提高了小程序使用的可靠性、提高了小程序的扩展能力,增强了用户体验。
59.若在判断小程序实例在前台还是在后台之后,获知小程序实例在后台,将小程序实例的页面栈显示于前台,并根据小程序实例的运行环境进行展示。实现了重新在前台展示小程序的页面栈。
60.若在判断内存中是否存在第一小程序实例标识对应的小程序实例之后,获知内存中不存在第一小程序实例标识对应的小程序实例,则启动小程序,并建立小程序的小程序实例和第一小程序实例标识的绑定关系。此时属于初次启动小程序的情况,即打开该小程序时,没有该小程序实例在前台或后台。
61.本发明实施例提供的小程序控制方法,通过在接收到打开小程序的用户触发请求后,若获知当前存在该小程序的实例在前台运行,则生成新的小程序实例标识,并重启小程序,建立新的小程序实例标识和重启后的小程序实例的绑定关系,在再次打开小程序时,实现了同一小程序的不同小程序实例之间独立运行,避免了对前台已运行的小程序实例的干
扰,解决了页面栈不可操作的问题,提高了小程序使用的可靠性、提高了小程序的扩展能力,增强了用户体验。
62.根据本发明实施例提供的一种小程序控制方法,所述根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,包括:根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识。
63.为区分第一小程序实例标识和第二小程序实例标识,通过设置预设标记来标记第二小程序实例标识。具体地,根据随机数、第一小程序实例标识及预设标记生成第二小程序实例标识。比如可以通过组合随机数、第一小程序实例标识及预设标记生成第二小程序实例标识。第二小程序实例标识包括随机数、第一小程序实例标识及预设标记的信息。
64.若一个小程序实例标识中存在该预设标记,则表示该小程序实例标识为第二小程序实例标识,即后期生成的。若一个小程序实例标识中不存在该预设标记,则表示该小程序实例标识为第一小程序实例标识。
65.本发明实施例提供的小程序控制方法,通过根据随机数、第一小程序实例标识及预设标记生成第二小程序实例标识,可以实现第一小程序实例标识和第二小程序实例标识的快速区分。
66.根据本发明实施例提供的一种小程序控制方法,所述方法还包括:响应于接收到小程序实例关于所述小程序标识的获取请求,根据所述小程序实例获取对应的小程序实例标识,判断所述小程序实例标识是否具有所述预设标记;响应于所述小程序实例标识具有所述预设标记,确认所述小程序实例标识为所述第二小程序实例标识,根据所述第二小程序实例标识获取所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识,将所述小程序标识返回给所述小程序实例。
67.小程序标识用于区分不同的小程序,小程序的实例运行过程中在某些业务处理过程需要获取小程序标识,以实现相关的业务功能。小程序标识由于可能经常发生更新,因此,通常小程序标识并不在脚本中写死。在小程序实例需要获取小程序标识时,通过向native层获取。
68.本发明实施例新建第二小程序实例标识是为了建立和新启动的小程序实例的绑定关系,从而运行不同的小程序实例。但是为避免新启动的小程序实例运行中出现异常,小程序实例获取的小程序标识都应小程序注册时的小程序标识。
69.因此,若接收到小程序实例发出的小程序标识的获取请求,根据小程序实例和小程序实例标识的映射关系,获取小程序实例获取对应的小程序实例标识,并判断小程序实例标识是否具有预设标记。若小程序实例标识具有预设标记,确认小程序实例标识为第二小程序实例标识。由于第二小程序实例标识是根据第一小程序实例标识得到的,因此可以通过反向变换,由第二小程序实例标识得到第一小程序实例标识。由于第一小程序实例标识是根据小程序标识得到的,因此可以通过反向变换,由第一小程序实例标识获取小程序标识。将获取的小程序标识返回给小程序实例,以供小程序实例根据小程序标识执行相关业务处理。
70.本发明实施例提供的小程序控制方法,通过在接收到小程序实例关于小程序标识的获取请求后,若获知小程序实例对应的小程序实例标识具有预设标记,则确认小程序实例标识为第二小程序实例标识,根据第二小程序实例标识获取第一小程序实例标识,根据
第一小程序实例标识获取小程序标识,将小程序标识返回给小程序实例,保证了再次启动的小程序的正常运行。
71.根据本发明实施例提供的一种小程序控制方法,所述方法还包括:响应于所述小程序实例标识不具有所述预设标记,确认所述小程序实例标识为所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识并返回给所述小程序实例。
72.在接收到小程序实例关于小程序标识的获取请求后,若获知小程序实例对应的小程序实例标识不具有上述预设标记,则确认该小程序实例标识为第一小程序实例标识,根据第一小程序实例标识获取小程序标识并返回给小程序实例,以供小程序实例根据小程序标识执行相关业务处理。
73.本发明实施例提供的小程序控制方法,通过在在接收到小程序实例关于小程序标识的获取请求后,若获知小程序实例对应的小程序实例标识不具有预设标记,则确认小程序实例标识为第一小程序实例标识,根据第一小程序实例标识获取小程序标识并返回给小程序实例,保证了初始启动的小程序的正常运行。
74.本发明实施例提供的一种小程序控制方法,所述根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识,包括:通过按照预设顺序组合所述第一小程序实例标识、所述随机数及所述预设标记生成所述第二小程序实例标识。
75.在根据随机数、第一小程序实例标识及预设标记生成第二小程序实例标识时,通过按照预设顺序组合第一小程序实例标识、随机数及预设标记生成第二小程序实例标识。比如,按照第一小程序实例标识在前,随机数在中间,预设标记在后的顺序进行组合得到第二小程序实例标识。如果随机数和预设标记的位数已知,则可以根据第二小程序实例标识快速反推出第一小程序实例标识。
76.本发明实施例提供的小程序控制方法,通过按照预设顺序组合第一小程序实例标识、随机数及预设标记生成第二小程序实例标识,便于快速地根据第二小程序实例标识快速反推出第一小程序实例标识。
77.本发明实施例提供的一种小程序控制方法,所述第二小程序实例标识中的所述第一小程序实例标识、所述随机数及所述预设标记通过间隔符号隔开;所述根据所述第二小程序实例标识获取所述第一小程序实例标识,包括:识别所述第二小程序实例标识中的所述间隔符号,并根据所述第一小程序实例标识、所述随机数及所述预设标记排列的所述预设顺序截取所述第一小程序实例标识。
78.为便于更快速地由第二小程序实例标识得到第一小程序实例标识,或者在随机数和预设标记的位数不确定的情况下仍快速地由第二小程序实例标识得到第一小程序实例标识,令第二小程序实例标识中的第一小程序实例标识、随机数及预设标记通过间隔符号隔开。也即在根据随机数、第一小程序实例标识及预设标记生成第二小程序实例标识时,按照预设顺序组合第一小程序实例标识、随机数及预设标记,并将第一小程序实例标识、随机数及预设标记利用间隔符号隔开,得到第二小程序实例标识。其中,第二小程序实例标识中的两个间隔符号可以相同或不同。
79.在根据第二小程序实例标识获取第一小程序实例标识时,识别第二小程序实例标识中的间隔符号,并根据第一小程序实例标识、随机数及预设标记排列的预设顺序截取第一小程序实例标识。比如,若第一小程序实例标识在前,则第一个间隔符号之前的部分即为
第一小程序实例标识。
80.图5是本发明实施例提供的小程序控制方法中小程序实例标识和小程序实例的映射关系示意图。如图5所示,小程序实例标识和小程序实例的映射关系通过一个映射表进行记录,用于native管理小程序实例。图5中,specifyid表示小程序实例标识。appid1-md51为小程序1的第一小程序实例标识。appid2-md52为小程序2的第一小程序实例标识。appid1_md51_随机串_bkuuidshare为小程序1的第二小程序实例标识。其中,bkuuidshare为用于识别第二小程序实例标识的预设标记,_为间隔符号。
81.本发明实施例提供的小程序控制方法,通过识别第二小程序实例标识中的间隔符号,并根据第一小程序实例标识、随机数及预设标记排列的预设顺序截取第一小程序实例标识,提高了根据第二小程序实例标识获取第一小程序实例标识的快速性。
82.根据本发明实施例提供的一种小程序控制方法,所述判断所述小程序实例在前台还是在后台,包括:根据与所述小程序实例对应的状态参数的值判断所述小程序实例在前台还是在后台;其中,小程序实例进入前台后,所述状态参数取值为逻辑1;小程序实例进入后台后,所述状态参数取值为逻辑0。
83.可以设置一个小程序实例的状态参数,用于表示小程序实例在前台还是在后台。比如这个状态参数可以表示为appisinwindow。小程序实例进入前台后,将该状态参数取值为逻辑1,比如使得appisinwindow=1,true,或yes,或其他设置的数值。当小程序实例进入后台后,将该状态参数取值为逻辑0,比如使得appisinwindow=0,false,或no,或其他设置的数值,此值需要和进入前台时的取值进行区分。
84.小程序实例进入前台时,会调用进入前台的方法,若进入前台的方法调用成功,则可获知小程序实例已进入前台,将状态参数设置为逻辑1。小程序实例进入后台时,会调用进入后台的方法,若进入后台的方法调用成功,则可获知小程序实例已进入后台,将状态参数设置为逻辑0。
85.本发明实施例提供的小程序控制方法,根据与小程序实例对应的状态参数的值判断小程序实例在前台还是在后台,实现了小程序实例在前台或后台的状态的快速获取。
86.每个小程序都有自己单独的uinavigationcontroller(容器类)去管理自己的页面栈,通过present方式展示在屏幕上。这种方式可以有效防止小程序的sdk使用入侵业务,降低客户端的接入成本。本发明实施例提供的小程序控制方法,通过拓展小程序前后台状态管理机制来处理同一个小程序多次打开时的内存和页面ui加载策略,在保留小程序sdk运行时的低业务侵入性、低内存占用、高复用性基础上,提升对高自由度app和业务场景的适配能力,为小程序sdk的推广接入提供了极大便利。
87.下面对本发明实施例提供的小程序控制装置进行描述,下文描述的小程序控制装置与上文描述的小程序控制方法可相互对应参照。
88.图6是本发明实施例提供的小程序控制装置的结构示意图。如图6所示,所述装置包括请求接收模块10、第一判断模块20、第二判断模块30及控制模块40,其中:请求接收模块10用于:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;第一判断模块20用于:根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例;第二判断模块30用于:响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程
序实例在前台还是在后台;控制模块40用于:响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
89.本发明实施例提供的小程序控制装置,通过在接收到打开小程序的用户触发请求后,若获知当前存在该小程序的实例在前台运行,则生成新的小程序实例标识,并重启小程序,建立新的小程序实例标识和重启后的小程序实例的绑定关系,在再次打开小程序时,实现了同一小程序的不同小程序实例之间独立运行,避免了对前台已运行的小程序实例的干扰,解决了页面栈不可操作的问题,提高了小程序使用的可靠性、提高了小程序的扩展能力,增强了用户体验。
90.根据本发明实施例提供的一种小程序控制装置,控制模块40在用于根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识时,具体用于:根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识。
91.本发明实施例提供的小程序控制装置,通过根据随机数、第一小程序实例标识及预设标记生成第二小程序实例标识,可以实现第一小程序实例标识和第二小程序实例标识的快速区分。
92.根据本发明实施例提供的一种小程序控制装置,所述控制模块40还用于:响应于接收到小程序实例关于所述小程序标识的获取请求,根据所述小程序实例获取对应的小程序实例标识,判断所述小程序实例标识是否具有所述预设标记;响应于所述小程序实例标识具有所述预设标记,确认所述小程序实例标识为所述第二小程序实例标识,根据所述第二小程序实例标识获取所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识,将所述小程序标识返回给所述小程序实例。
93.本发明实施例提供的小程序控制装置,通过在接收到小程序实例关于小程序标识的获取请求后,若获知小程序实例对应的小程序实例标识具有预设标记,则确认小程序实例标识为第二小程序实例标识,根据第二小程序实例标识获取第一小程序实例标识,根据第一小程序实例标识获取小程序标识,将小程序标识返回给小程序实例,保证了再次启动的小程序的正常运行。
94.根据本发明实施例提供的一种小程序控制装置,所述控制模块40还用于:响应于所述小程序实例标识不具有所述预设标记,确认所述小程序实例标识为所述第一小程序实例标识,根据所述第一小程序实例标识获取所述小程序标识并返回给所述小程序实例。
95.本发明实施例提供的小程序控制装置,通过在在接收到小程序实例关于小程序标识的获取请求后,若获知小程序实例对应的小程序实例标识不具有预设标记,则确认小程序实例标识为第一小程序实例标识,根据第一小程序实例标识获取小程序标识并返回给小程序实例,保证了初始启动的小程序的正常运行。
96.根据本发明实施例提供的一种小程序控制装置,所述控制模块40在用于根据所述随机数、所述第一小程序实例标识及预设标记生成第二小程序实例标识时,具体用于:通过按照预设顺序组合所述第一小程序实例标识、所述随机数及所述预设标记生成所述第二小程序实例标识。
97.本发明实施例提供的小程序控制装置,通过按照预设顺序组合第一小程序实例标识、随机数及预设标记生成第二小程序实例标识,便于快速地根据第二小程序实例标识快
速反推出第一小程序实例标识。
98.根据本发明实施例提供的一种小程序控制装置,所述第二小程序实例标识中的所述第一小程序实例标识、所述随机数及所述预设标记通过间隔符号隔开;所述控制模块40在用于根据所述第二小程序实例标识获取所述第一小程序实例标识时,具体用于:识别所述第二小程序实例标识中的所述间隔符号,并根据所述第一小程序实例标识、所述随机数及所述预设标记排列的所述预设顺序截取所述第一小程序实例标识。
99.本发明实施例提供的小程序控制装置,通过识别第二小程序实例标识中的间隔符号,并根据第一小程序实例标识、随机数及预设标记排列的预设顺序截取第一小程序实例标识,提高了根据第二小程序实例标识获取第一小程序实例标识的快速性。
100.根据本发明实施例提供的一种小程序控制装置,所述第二判断模块30在用于判断所述小程序实例在前台还是在后台时,具体用于:根据与所述小程序实例对应的状态参数的值判断所述小程序实例在前台还是在后台;其中,小程序实例进入前台后,所述状态参数取值为逻辑1;小程序实例进入后台后,所述状态参数取值为逻辑0。
101.本发明实施例提供的小程序控制装置,根据与小程序实例对应的状态参数的值判断小程序实例在前台还是在后台,实现了小程序实例在前台或后台的状态的快速获取。
102.图7是本发明实施例提供的电子设备的结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(communications interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行小程序控制方法,该方法包括:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例;响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台;响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
103.此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
104.另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的小程序控制方法,该方法包括:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小
程序实例标识对应的小程序实例;响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台;响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
105.又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的小程序控制方法,该方法包括:接收打开小程序的用户触发请求;其中,所述打开小程序的用户触发请求包括待打开的小程序的小程序标识;根据所述小程序标识得到第一小程序实例标识,判断内存中是否存在所述第一小程序实例标识对应的小程序实例;响应于内存中存在所述第一小程序实例标识对应的小程序实例,判断所述小程序实例在前台还是在后台;响应于所述小程序实例在前台,生成随机数,根据所述随机数及所述第一小程序实例标识生成第二小程序实例标识,重新启动所述小程序,并建立重新启动的所述小程序的小程序实例和所述第二小程序实例标识的绑定关系。
106.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
107.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
108.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献