小程序控制方法、装置、设备和介质与流程

文档序号:20439208发布日期:2020-04-17 22:17阅读:214来源:国知局
小程序控制方法、装置、设备和介质与流程
本申请实施例涉及计算机
技术领域
,具体涉及通信技术,尤其涉及一种小程序控制方法、装置、设备和介质。
背景技术
:小程序(miniprogram)是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,也体现了“用完即走”的理念。在实际使用过程中,小程序运行过程中不可避免的会出现各种异常情况。例如,js报错、系统内存回收导致白屏或者触发小程序管理模块销毁单个小程序导致打开白屏等。当小程序发生异常时,通常通过退出宿主应用并关闭小程序,再重新打开宿主应用进入小程序;或者,在小程序使用过程中,为小程序添加无效标记,后续重启小程序时,如果监测到小程序的无效标记,则清除小程序内存数据并重新打开。然而,上述两种解决方式,影响小程序的使用时长及用户留存数据,增加了小程序白屏率,严重影响用户体验。技术实现要素:本申请实施例提出一种小程序控制方法、装置、设备和介质,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。第一方面,本申请实施例提供了一种小程序控制方法,该方法包括:确定宿主应用上是否有待重启的目标小程序;控制所述目标小程序清除目标小程序页面栈中的数据以及目标资源数据;控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序。本申请实施例通过确定宿主应用上是否有待重启的目标小程序,若有待重启的目标小程序,则控制目标小程序清除目标小程序页面栈中的数据及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。另外,根据本申请上述实施例的小程序控制方法,还可以具有如下附加的技术特征:可选的,确定宿主应用上是否有待重启的目标小程序,包括:检测宿主应用上展示的小程序所处屏幕状态;若该小程序处于全局屏幕异常状态,则将该小程序作为待重启的目标小程序。上述申请中的一个实施例具有如下优点或有益效果:通过将所处屏幕状态为全局屏幕异常状态的小程序,确定为待重启的目标小程序,为确定待重启的目标小程序奠定基础。可选的,检测宿主应用上展示的小程序所处屏幕状态,包括:通过截屏操作获取宿主应用上的小程序显示图,并确定所述小程序显示图的中间区域和其他区域;确定所述中间区域中是否有除小程序背景色之外的其他颜色像素点;若是,则确定该小程序不处于全局屏幕异常状态;若否,则确定所述其他区域中是否有除小程序背景色之外的其他颜色像素点,并根据结果确定该小程序是否处于非全局屏幕异常状态。上述申请中的一个实施例具有如下优点或有益效果:通过将小程序显示图划分为多个区域,并确定中间区域是否有其他颜色像素点,以检测小程序所处屏状态是否处于全局屏幕异常状态,以提高对小程序所处屏幕状态的检测效率。可选的,通过截屏操作获取宿主应用上的小程序显示图,包括:从宿主应用的窗口容器列表中截取除屏幕窗口之外的各窗口图片;根据所述各窗口图片,生成宿主应用上的小程序显示图。上述申请中的一个实施例具有如下优点或有益效果:通过截屏操作截取除屏幕窗口之外的各窗口图片,并根据各窗口图片生成宿主应用上的小程序显示图,实现在截取小程序的屏幕窗口之外,还能截取小程序显示屏幕上的提示弹窗及键盘弹窗等信息,从而提高对小程序显示图处于异常状态的检测准确度。可选的,确定所述中间区域或所述其他区域中是否有除小程序背景色之外的其他颜色像素点,包括:确定所述中间区域或所述其他区域中像素点的通道值与小程序背景色的通道值之间的差值;若所述差值小于阈值,则确定该像素点为背景色像素点;否则,确定该像素点为其他颜色像素点。上述申请中的一个实施例具有如下优点或有益效果:基于中间区域或其他区域中像素点的通道值与小程序背景色的通道值之间的差值和阈值的关系,确定小程序显示图处于全局屏幕异常状态还是非全局屏幕异常状态,以避免部分机型在截屏时存在的色差,导致检测小程序所处屏幕状态不准确,以实现引入误差阈值,提高对小程序显示图处于异常状态的检测准确性。可选的,检测宿主应用上展示的小程序所处屏幕状态,包括:获取宿主应用上展示的小程序,且确定宿主应用是否进入该小程序的二级页面;若是,则确定该小程序不处于全局屏幕异常状态。上述申请中的一个实施例具有如下优点或有益效果:当宿主应用进入自身所展示的小程序的二级页面时,确定该小程序不处于全局屏幕异常状态,以优化小程序所处屏幕状态的检测流程。可选的,确定宿主应用上是否有待重启的目标小程序,包括:若宿主应用上的任一小程序监测到重启事件,则将该小程序作为待重启的目标小程序;其中,所述重启事件在检测到作用于该小程序中重启控件的触发操作时生成;或者,在检测到宿主应用上的任一小程序启动失败时生成。可选的,确定宿主应用上是否有待重启的目标小程序,包括:若宿主应用上的任一小程序检测到资源更新事件,则将该小程序作为待重启的目标小程序;其中,所述资源更新事件根据通过该小程序资源更新接口发布的资源数据生成。可选的,确定宿主应用上是否有待重启的目标小程序,包括:若宿主应用切换到任一小程序,且已存在该小程序页面栈,则将该小程序作为待重启的目标小程序。上述申请中的一个实施例具有如下优点或有益效果:通过采用不同方式确定宿主应用上的待重启的目标小程序,提高确定待重启的目标小程序的多样性。可选的,控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序,包括:通过小程序创建指令,控制所述目标小程序绑定清除数据后的目标小程序页面栈;通过小程序重启指令,控制所述目标小程序重新下载目标资源数据,并通过绑定的目标小程序页面栈展示目标资源数据下载进度,且根据重新下载的目标资源数据重启所述目标小程序。上述申请中的一个实施例具有如下优点或有益效果:通过控制目标小程序绑定清除数据后的目标小程序页面栈,以获取该目标小程序的启动数据,并基于启动数据重新创建并加载目标小程序,以实现在小程序运行过程中,重新启动目标小程序,提高用户体验。可选的,所述方法还包括:在目标小程序重启过程中为目标小程序添加探针,用于在目标小程序重启后采集目标小程序的运行数据。上述申请中的一个实施例具有如下优点或有益效果:通过为目标小程序添加探针,以采集目标小程序的运行数据,从而实现根据运行数据定位目标小程序的异常来源,为修复异常提供条件。可选的,检测宿主应用上展示的小程序所处屏幕状态之后,还包括:若宿主应用上展示的小程序处于局部屏幕异常状态,则控制清除该小程序的网页视图,重新创建网页视图且绑定该小程序。上述申请中的一个实施例具有如下优点或有益效果:当确定小程序处于局部屏幕异常状态时,通过重新创建网页视图并绑定该小程序,实现无需重启小程序,只需重新生成网页视图即可排除异常。第二方面,本申请实施例还公开了一种小程序控制装置,包括:确定模块,用于确定宿主应用上是否有待重启的目标小程序;第一控制模块,用于控制所述目标小程序清除目标小程序页面栈中的数据以及目标资源数据;第二控制模块,用于控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序。第三方面,本申请实施例还公开了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请任一实施例所述的小程序控制方法。第四方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请任一实施例所述的小程序控制方法。上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。附图说明附图用于更好地理解本方案,不构成对本申请的限定。其中:图1是本申请实施例提供的一种小程序控制方法的流程示意图;图2是本申请实施例提供的另一种小程序控制方法的流程示意图;图3是本申请实施例提供的将小程序显示图切分为多个尺度相同区域的示意图;图4是本申请实施例提供的又一种小程序控制方法的流程示意图;图5是本申请实施例提供的再一种小程序控制方法的流程示意图;图6是本申请实施例提供的再一种小程序控制方法的流程示意图;图7是本申请实施例提供的一种小程序控制装置的结构示意图;图8是本申请实施例提供的另一种小程序控制装置的结构示意图;图9是本申请实施例提供的一种电子设备的结构示意图。具体实施方式以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。本申请实施例针对相关技术中,当小程序在运行过程中发生异常时,通过退出宿主应用并关闭小程序,再重新打开宿主应用进入小程序;或者,在小程序使用过程中,为小程序添加无效标记,后续重启小程序时,如果监测到小程序的无效标记,则清除小程序内存数据并重新打开,存在的影响小程序的使用时长及用户留存数据,增加了小程序白屏率,严重影响用户体验的问题,提出一种小程序控制方法、装置、设备及介质。本申请实施例通过确定宿主应用上是否有待重启的目标小程序,若存在则控制目标小程序清除目标小程序页面栈中的数据以及目标资源数据,然后控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,并且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。下面参考附图对本申请实施例的小程序控制方法、装置、设备及介质进行详细说明。图1是本申请实施例提供的一种小程序控制方法的流程示意图,本申请实施例可适用于在小程序运行过程中的重启情况,该方法可由小程序控制装置来执行,该装置设置有小程序管理系统,小程序管理系统包括宿主应用、小程序管理工具、小程序和包括不同小程序页面栈的导航栈,且该装置可以由软件和/硬件实现,可集成于电子设备的内部。在本实施例中,电子设备可以是任意具有数据处理功能的硬件设备。该方法包括如下步骤:s101,确定宿主应用上是否有待重启的目标小程序。在本申请实施例中,宿主应用是指为小程序提供运行环境的应用,使得小程序依托于宿主应用在电子设备上运行。其中宿主应用比如为手机百度等。其中电子设备可以是,但不限于:智能手机、平板电脑、个人数字助理、智能家居设备及可穿戴式设备等。其中,智能家居包括:智能电视等;可穿戴式设备包括:智能手环、智能手表等。其中,一个宿主应用中可以运行多个小程序。例如,宿主应用xx1中运行小程序y1和小程序y2。示例性的,可通过如下方式确定宿主应用上是否有待重启的目标小程序。方式一:通过检测宿主应用上展示的小程序所处屏幕状态,并当该小程序所处屏幕状态为全局屏幕异常状态时,确定宿主应用上有待重启的目标小程序;在本实施例中,通过小程序管理系统中的小程序管理工具检测宿主应用上展示的小程序所处屏幕状态,以确定宿主应用上是否有待重启的目标小程序。其中,待重启的目标小程序即为屏幕状态处于全局屏幕异常状态的小程序。例如,若小程序a所处的屏幕状态为全局屏幕异常状态,则将小程序a确定为待重启的目标小程序。方式二:当宿主应用上的任一小程序检测到重启事件时,确定宿主应用上有待重启的目标小程序;其中,待重启的目标小程序即为检测到重启事件的小程序。例如,若小程序b检测到重启事件时,则将小程序b确定为待重启的目标小程序。需要说明的是,本实施例中当宿主应用上的任一小程序检测到重启事件时,该小程序会将该重启事件发送至小程序管理工具,以使小程序管理工具确定宿主应用上有待重启的目标小程序。方式三:当宿主应用上的任一小程序检测到资源更新事件时,确定宿主应用上有待重启的目标小程序;其中,待重启的目标小程序即为检测到资源更新事件的小程序。例如,若小程序c检测到资源更新事件时,则将小程序c确定为待重启的目标小程序。方式四:当宿主应用切换到任一小程序,且已存在该小程序页面栈,则确定宿主应用上有待重启的目标小程序。在本实施例中,通过小程序管理系统中的小程序管理工具检测宿主应用切换到任一小程序,且已存在该小程序页面栈时,确定宿主应用上有待重启的目标小程序。其中,待重启的目标小程序即为已存在页面栈的小程序。例如,宿主应用从小程序e切换到小程序d,且小程序d的页面栈已存,此时将小程序d确定为待重启的目标小程序。需要说明的是,上述四种确定宿主应用上是否有待重启的目标小程序的实现方式,仅作为本申请实施例的示例性说明,不作为本申请的具体限定。s102,控制所述目标小程序清除目标小程序页面栈中的数据以及目标资源数据。s103,控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序。本申请实施例中,目标小程序页面栈中的数据,是指除目标小程序的启动数据之外的其他数据;目标资源数据,是指目标小程序的本地资源文件。小程序的启动数据是指小程序启动时需要的数据,可以包括小程序id、打开小程序的来源小程序id、来源小程序页面数据、小程序初始页面参数等。由于本申请实施例中,小程序页面栈和小程序运行时相对独立,且导航栈中存储有小程序页面栈,因此当控制目标小程序清除目标小程序页面栈中除了目标小程序的启动数据之外的其他数据及本地资源文件之后,导航栈的目标小程序页面栈中还存在目标小程序的启动数据,因此目标小程序还可基于清除数据后的目标小程序页面栈中的启动数据重新创建新的目标小程序。示例性的,控制目标小程序清除目标小程序页面栈中的数据以及目标资源数据之后,通过控制目标小程序绑定清除数据后的目标程序页面栈,以获取启动数据,并重新下载目标资源数据。然后,根据绑定清除数据后的目标小程序页面栈中的启动数据及重新下载的目标资源数据重启目标小程序。具体实现时,可通过小程序创建指令,控制所述目标小程序绑定清除数据后的目标小程序页面栈;通过小程序重启指令,控制所述目标小程序重新下载目标资源数据,并通过绑定的目标小程序页面栈展示目标资源数据下载进度,且根据重新下载的目标资源数据重启所述目标小程序。其中,通过目标小程序页面栈展示目标资源数据下载进度,以使用户可直观的看到目标小程序的目标资源数据下载情况,进一步提升用户体验。需要说明的是,本申请实施例中小程序创建指令和小程序重启指令,由小程序管理系统中的小程序管理工具触发生成。本申请实施例提供的技术方案,通过确定宿主应用上是否有待重启的目标小程序,若有待重启的目标小程序,则控制目标小程序清除目标小程序页面栈中的数据及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。在上述实施例的基础上,s103之后还包括:在目标小程序重启过程中为目标小程序添加探针,用于在目标小程序重启后采集目标小程序的运行数据。本申请实施例通过为目标小程序添加探针,以采集目标小程序的运行数据,从而实现根据运行数据定位目标小程序的异常来源,为修复异常提供条件。通过上述介绍可知,本申请实施例在确定宿主应用上有待重启的目标小程序时,控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,以通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。在一种实现场景中,确定宿主应用上是否有待重启的目标小程序包括:检测宿主应用上展示的小程序所处屏幕状态,若该小程序处于全局屏幕异常状态,则将该小程序作为待重启的目标小程序,并对该目标小程序进行重启操作。下面结合图2,对上述确定待重启的目标小程序并重启目标小程序进行说明。如图2所示,该方法可以包括:s201,检测宿主应用上展示的小程序所处屏幕状态。可选的,可通过截屏操作获取宿主应用上的小程序显示图,并确定小程序显示图的中间区域和其他区域;然后确定中间区域中是否有除小程序背景色之外的其他颜色像素点;若是,则确定该小程序不处于全局屏幕异常状态;否则,则进一步确定该小程序显示图的其他区域中是否有除小程序背景色之外的其他颜色像素点,并根据结果确定该小程序是否处于非全局屏幕异常状态。其中,通过截屏操作获取宿主应用上的小程序显示图,具体包括:从宿主应用的窗口容器列表中截取除屏幕窗口之外的各窗口图片;根据所述各窗口图片,生成宿主应用上的小程序显示图。本申请实施例中,截屏操作具体是指windows的截屏方式,以截取小程序屏幕窗口之外的其他窗口图片,例如键盘弹窗及提示弹窗等。从而解决现有通过网页视图截屏方式截取小程序显示图时,存在的无法截取除小程序屏幕窗口之外的其他窗口图片,导致对小程序显示图所处屏幕状态的检测准确度低的问题。示例性的,利用windows的截屏方式获取宿主应用上的小程序显示图的实现如下://通过截取windows的方式截取图片获取到宿主应用上的小程序显示图之后,现有方案通常是遍历整个小程序显示图,确定小程序是否处于全局屏幕异常状态。然而,由于一般小程序的主体内容都是在屏幕的正中心,边缘处大概率是白屏(小程序背景色)。因此如果从(0,0)点开始对整个显示图进行遍历,则开始位置的像素点基本上都是白色,这样就使得检测效率低下。基于此,本申请实施例获取到宿主应用上的小程序显示图之后,可利用预设规则将该小程序显示图分割为多个区域,然后优先确定中间区域中是否有除小程序背景色之外的其他颜色像素点,以提高对小程序所处屏幕状态的检测效率。其中,预设规则可根据实际需要进行设置,此处不做限制。例如,将小程序显示图沿水平方向(即横向)分割为3份,则将第二个位置(2/3处)对应的区域作为中间区域,第一个位置和第三个位置(1/3处和3/3处)对应的区域作为其他区域;又如,将小程序显示图沿水平方向(即横向)分割为5份,则将3/5位置对应的区域作为中间区域,1/5,2/5,4/5和5/5位置对应的区域作为其他区域等。假设将小程序显示图分割为5份,则实现代码可如下://检测区域为截屏中间1/5宽度的图像(保留3个像素防止黑边影响检测)cgrectrect=cgrectmake(snapshot.size.width/5*2,3,snapshot.size.width/5,snapshot.size.height-6);进一步的,确定小程序显示图的中间区域和其他区域之后,可优先判断中间区域中的像素点是否存在除小程序背景色(白色像素点)之外的其他颜色像素点;若存在则确定该小程序不处于全局屏幕异常状态;若不存在,则进一步确定其他区域中是否有除小程序背景色之外的其他颜色像素点;若其他区域中有除小程序背景色之外的其他颜色像素点时,则确定该小程序处于非全局屏幕异常状态;若其他区域中没有除小程序背景色之外的其他颜色像素点,则确定该小程序处于全局屏幕异常状态。具体实现时,可通过如下方式确定中间区域或其他区域中是否有除小程序背景色之外的其他颜色像素值;通过将中间区域中的像素点或者其他区域中的像素点的像素值与小程序背景色中像素点的像素值进行比对,以确定中间区域或者其他区域中是否有除小程序背景色之外的其他颜色像素点。例如,若小程序背景色中像素点的像素值为255,当中间区域中任意像素点的像素值不为255时,则确定该中间区域中有除小程序背景色之外的其他颜色像素点。由于实际使用过程中,部分机型截图时会存在色差,导致确定中间区域或者其他区域中是否有除小程序背景色之外的其他颜色像素点时存在误差。为此,本申请实施例为了避免部分机型截图时存在色差,引入误差阈值,以确定中间区域或者其他区域中各像素点的通道像素值与小程序背景色的通道值之间的差值。然后,将差值与误差阈值进行比对,确定中间区域或者其他区域中各像素点为背景色像素点,还是其他颜色像素点。具体实现时,确定所述中间区域或所述其他区域中是否有除小程序背景色之外的其他颜色像素点,包括:确定所述中间区域或所述其他区域中像素点的通道值与小程序背景色的通道值之间的差值;若所述差值小于阈值,则确定该像素点为背景色像素点;否则,确定该像素点为其他颜色像素点。本申请实施例中,像素点的通道值,具体为rgba。其中,rgba是代表red(红色)green(绿色)blue(蓝色)和alpha(透明度)的色彩空间。其中,阈值即为误差阈值。在本实施例中,阈值可设置为小于1的数值。即,通过将中间区域或者其他区域中各像素点的四个通道值,分别与小程序背景色的四个通道值进行作差,若各像素点中任一通道的差值大于阈值,则确定中间区域或者其他区域中该像素点为其他颜色像素点;若各像素点中四个通道的差值均小于阈值,则确定中间区域或者其他区域中该像素点为背景色像素点。本实施例通过引入误差阈值,使得确定中间区域或者其他区域中是否有除小程序背景色之外的其他颜色像素点的准确度更高。例如,假设阈值为1,中间区域中任一像素点的通道值如下表1,小程序背景色的通道值如下表2,则确定中间区域中上述像素点的通道值与小程序背景色的通道值之间的差值如下表3所示;然后,将表3中各通道的差值与阈值1进行比对,以确定中间区域中该像素点为其他颜色像素点。表1r255g221b227a178表2r255g255b255a255表3r|255-255|=00<1g|221-255|=3434>1b|227-255|=2828>1a|178-255|=7777>1需要说明的是,如果小程序背景色为非白色,例如蓝色,那么就不是白屏还是蓝屏。即将截图中像素点的各通道像素值与蓝色的各通道像素值进行对比,确定是否为屏幕异常场景。本申请另一实施例中,检测宿主应用上展示的小程序所处屏幕状态,还包括:获取宿主应用上展示的小程序,且确定宿主应用是否进入该小程序的二级页面;若是,则确定该小程序不处于全局屏幕异常状态。也即是说,当宿主应用上展示的小程序页面标识变成第二级页面标识时,则说明用户打开小程序过程中,进入了小程序的二级页面,此时小程序为非白屏,结束全局屏幕异常状态检测。其中,小程序页面标识和第二级页面标识可以是指能够唯一确定页面身份的信息,例如id等。s202,若该小程序处于全局屏幕异常状态,则将该小程序作为待重启的目标小程序。示例性的,当确定宿主应用上展示的小程序所处屏幕状态为全局屏幕异常状态时,则说明该小程序在运行过程中出现了异常,此时可将该小程序作为待重启的目标小程序,以对其进行重启操作。s203,控制所述目标小程序清除目标程序页面栈中的数据以及目标资源数据。s204,控制所述目标小程序绑定清除数据后的目标程序页面栈,重新下载目标资源数据,且通过所述目标程序页面栈和重新下载的目标资源数据重启所述目标小程序。其中,s203-s204的实现过程及原理,与上述实施例中s102-s103类似,具体参见上述实施例实现过程,此处对其不做过多赘述。本申请实施例提供的技术方案,通过检测宿主应用上展示的小程序所处屏幕状态,以确定该小程序是否为待重启的目标小程序,若是,则控制该目标小程序清除目标小程序页面栈中的数据以及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现为小程序设置有效的重启机制,使得小程序在运行过程中出现异常时,可自动重启,从而提高了小程序运行的稳定性。在上述实施例的基础上,s201之后还包括:若宿主应用上展示的小程序处于局部屏幕异常状态,则控制清除该小程序的网页视图,重新创建网页视图且绑定该小程序。示例性的,获取宿主应用上的小程序显示图之后,本申请实施例还可将该小程序显示图切分为多个尺度相同的区域(具体如图3所示),然后检测每个区域是否为纯色,并确定纯色区域占所有区域的占比是否超过占比阈值,以确定该小程序是否处于局部屏幕异常状态。其中,当纯色区域占比超过占比阈值,则说明该小程序处于局部屏幕异常状态,否则不为局部屏幕异常状态。其中,确定每个区域是否为纯色,通过逐个像素点扫描是否与下一个像素点颜色一样来判定。其中,占比阈值可根据实际需要进行适应性设置,此处不做具体限定,例如0.5等。本申请实施例中,当确定宿主应用上展示的小程序处于局部屏幕异常状态时,则说明该小程序的网页视图(小程序页面栈)被小程序管理系统销毁,但是小程序未被销毁,此时控制清除该小程序的异常网页视图,并重新创建网页视图并绑定该小程序即可。也就是说,在小程序的网页视图异常时,小程序无需重启,仅需重新生成网页视图即可恢复正常,提高了对小程序在运行过程中异常处理针对性,进一步提升了用户体验。在另一种实现场景中,确定宿主应用上是否有待重启的目标小程序还包括:若宿主应用上的任一小程序监测到重启事件,则将该小程序作为待重启的目标小程序,并对该目标小程序进行重启操作。下面结合图4,对上述确定待重启的目标小程序并重启目标小程序进行说明。如图4所示,该方法可以包括:s401,若宿主应用上的任一小程序监测到重启事件,则将该小程序作为待重启的目标小程序。其中,所述重启事件在检测到作用于该小程序中重启控件的触发操作时生成;或者,在检测到宿主应用上的任一小程序启动失败时生成。本申请实施例中,在检测到宿主应用上的任一小程序启动失败时生成,可以是指当宿主应用上的小程序切换过程中,检测到任一小程序异常时自动生成重启事件;或者,宿主应用在无网状态下进入任一小程序时生成重启事件。其中,任一小程序异常可能是宿主应用出现异常导致该小程序异常;或者,可能是宿主应用的内存管理机制,如打开超过5个小程序时,把之前的小程序清除,一级级返回已卸载的小程序出现异常。作用于该小程序中重启控件的触发操作,可以是指小程序运行过程中出现异常时,用户手动触发该小程序菜单栏中的重启控件的触发操作。s402,控制所述目标小程序清除目标程序页面栈中的数据以及目标资源数据。s403,控制所述目标小程序绑定清除数据后的目标程序页面栈,重新下载目标资源数据,且通过所述目标程序页面栈和重新下载的目标资源数据重启所述目标小程序。其中,s402-s403的实现过程及原理,与上述实施例中s102-s103类似,具体参见上述实施例实现过程,此处对其不做过多赘述。本申请实施例提供的技术方案,通过将检测到重启事件的小程序作为待重启的目标小程序,以控制该目标小程序清除目标小程序页面栈中的数据以及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。在又一种实现场景中,确定宿主应用上的小程序是否有待重启的目标小程序还包括:若宿主应用上的任一小程序检测到资源更新事件,则将该小程序作为待重启的目标小程序,并对该目标小程序进行重启操作。下面结合图5,对上述确定待重启的目标小程序并重启目标小程序进行说明。如图5所示,该方法可以包括:s501,若宿主应用上的任一小程序检测到资源更新事件,则将该小程序作为待重启的目标小程序。其中,所述资源更新事件基于通过该小程序资源更新接口发布的资源数据生成。在实际应用过程中,小程序开发者会对小程序进行紧急修复或者版本更新,如果用户当前打开小程序,则无法直接进行更新,导致开发者紧急修复一些问题或者更新版本时,用户无法直接感知,只能退出小程序后再次进入时才能看到更新的内容,使得小程序更新不具有实时性。为此,本申请通过小程序暴露的资源更新接口直接对小程序包进行更新,实现在小程序运行过程中,通过重启及时刷新小程序,重新拉取小程序资源数据,可以及时高效的修复线上问题,从而使得用户在使用小程序时即可直观的感知小程序的更新。s502,控制所述目标小程序清除目标程序页面栈中的数据以及目标资源数据。s503,控制所述目标小程序绑定清除数据后的目标程序页面栈,重新下载目标资源数据,且通过所述目标程序页面栈和重新下载的目标资源数据重启所述目标小程序。其中,s502-s503的实现过程及原理,与上述实施例中s102-s103类似,具体参见上述实施例实现过程,此处对其不做过多赘述。本申请实施例提供的技术方案,在小程序运行过程中,支持开发者线上强制刷新小程序,重新拉取小程序资源数据,可以更及时高效的修复线上问题,使得用户在使用小程序时即可直观的感知小程序的更新。在再一种实现场景中,确定宿主应用上是否有待重启的目标小程序还包括:若宿主应用切换到任一小程序,且已存在该小程序页面栈,则将该小程序作为待重启的目标小程序,并对该目标小程序进行重启操作。下面结合图6,对上述确定待重启的目标小程序并重启目标小程序进行说明。如图6所示,该方法可以包括:s601,若宿主应用切换到任一小程序,且已存在该小程序页面栈,则将该小程序作为待重启的目标小程序。s602,控制所述目标小程序清除目标程序页面栈中的数据以及目标资源数据。s603,控制所述目标小程序绑定清除数据后的目标程序页面栈,重新下载目标资源数据,且通过所述目标程序页面栈和重新下载的目标资源数据重启所述目标小程序。由于宿主应用上的小程序支持多个小程序相互切换,如果小程序a切换至小程序b,再从小程序b切换至小程序a时,此时小程序a页面栈已经存在,此时就存在两个小程序a的页面栈,使得页面数据存在冗余,数据容易出现错乱导致维护困难。为此,本申请实施例为了避免同一小程序的页面数据存在冗余,将小程序之前的页面栈卸载,并清空之前的页面栈中的数据,从而避免两份小程序数据的缓存,减少数据冗余,减少内存占用量,也避免相互间数据同时读写导致的各种问题。其中,s602-s603的实现过程及原理,与上述实施例中s102-s103类似,具体参见上述实施例实现过程,此处对其不做过多赘述。本申请实施例提供的技术方案,在宿主应用切换到任一小程序,且已存在该小程序页面栈时,将该小程序作为待重启的目标小程序,以将对其进行重启操作。由此,避免两份小程序数据的缓存,减少数据冗余,减少内存占用量,也避免相互间数据同时读写导致的各种问题。图7是本申请实施例提供的一种小程序控制装置的结构示意图。该小程序控制装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。如图7所示,本申请实施例公开的一种小程序控制装置700包括确定模块710、第一控制模块720和第二控制模块730,其中:确定模块710,用于确定宿主应用上是否有待重启的目标小程序;第一控制模块720,用于控制所述目标小程序清除目标小程序页面栈中的数据以及目标资源数据;第二控制模块730,用于控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序。作为本申请的一种可选的实现形式,确定模块710,具体用于:若宿主应用上的任一小程序监测到重启事件,则将该小程序作为待重启的目标小程序;其中,所述重启事件在检测到作用于该小程序中重启控件的触发操作时生成;或者,在检测到宿主应用上的任一小程序启动失败时生成。作为本申请的一种可选的实现形式,确定模块710,具体用于:若宿主应用上的任一小程序检测到资源更新事件,则将该小程序作为待重启的目标小程序;其中,所述资源更新事件根据通过该小程序资源更新接口发布的资源数据生成。作为本申请的一种可选的实现形式,确定模块710,具体用于:若宿主应用切换到任一小程序,且已存在该小程序页面栈,则将该小程序作为待重启的目标小程序。作为本申请的一种可选的实现形式,第二控制模块730,具体用于:通过小程序创建指令,控制所述目标小程序绑定清除数据后的目标小程序页面栈;通过小程序重启指令,控制所述目标小程序重新下载目标资源数据,并通过绑定的目标小程序页面栈展示目标资源数据下载进度,且根据重新下载的目标资源数据重启所述目标小程序。作为本申请的一种可选的实现形式,所述装置700,还包括:添加模块。其中,添加模块用于在目标小程序重启过程中为目标小程序添加探针,用于在目标小程序重启后采集目标小程序的运行数据。需要说明的是,前述对小程序控制方法实施例的解释说明也适用于该实施例的小程序控制装置,其实现原理类似,此处不再赘述。本申请实施例提供的技术方案,通过确定宿主应用上是否有待重启的目标小程序,若有待重启的目标小程序,则控制目标小程序清除目标小程序页面栈中的数据及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。图8是本申请实施例提供的一种小程序控制装置的结构示意图。该小程序控制装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。如图8所示,本申请实施例公开的一种小程序控制装置700包括确定模块710、第一控制模块720和第二控制模块730,其中:确定模块710,用于确定宿主应用上是否有待重启的目标小程序;第一控制模块720,用于控制所述目标小程序清除目标小程序页面栈中的数据以及目标资源数据;第二控制模块730,用于控制所述目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过所述目标小程序页面栈和重新下载的目标资源数据重启所述目标小程序。作为本申请的一种可选的实现形式,确定模块710,还包括:检测单元7110和第一控制单元7112。其中,检测单元7110,用于检测宿主应用上展示的小程序所处屏幕状态;第一控制单元7112,用于若该小程序处于全局屏幕异常状态,则将该小程序作为待重启的目标小程序。作为本申请的一种可选的实现形式,检测单元7110,具体用于:通过截屏操作获取宿主应用上的小程序显示图,并确定所述小程序显示图的中间区域和其他区域;确定所述中间区域中是否有除小程序背景色之外的其他颜色像素点;若是,则确定该小程序不处于全局屏幕异常状态;若否,则确定所述其他区域中是否有除小程序背景色之外的其他颜色像素点,并根据结果确定该小程序是否处于非全局屏幕异常状态。作为本申请的一种可选的实现形式,检测单元7110,还用于:从宿主应用的窗口容器列表中截取除屏幕窗口之外的各窗口图片;根据所述各窗口图片,生成宿主应用上的小程序显示图。作为本申请的一种可选的实现形式,检测单元7110,还用于:确定所述中间区域或所述其他区域中像素点的通道值与小程序背景色的通道值之间的差值;若所述差值小于阈值,则确定该像素点为背景色像素点;否则,确定该像素点为其他颜色像素点。作为本申请的一种可选的实现形式,检测单元7110,还用于:获取宿主应用上展示的小程序,且确定宿主应用是否进入该小程序的二级页面;若是,则确定该小程序不处于全局屏幕异常状态。作为本申请的一种可选的实现形式,所述确定模块710,还包括:第二控制单元。其中,第二控制单元用于若宿主应用上展示的小程序处于局部屏幕异常状态,则控制清除该小程序的网页视图,重新创建网页视图且绑定该小程序。需要说明的是,前述对小程序控制方法实施例的解释说明也适用于该实施例的小程序控制装置,其实现原理类似,此处不再赘述。本申请实施例提供的技术方案,通过检测宿主应用上展示的小程序所处屏幕状态,以确定该小程序是否为待重启的目标小程序,若是,则控制该目标小程序清除目标小程序页面栈中的数据以及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标小程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现为小程序设置有效的重启机制,使得小程序在运行过程中出现异常时,可自动重启,从而提高了小程序运行的稳定性。根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。如图9所示,是根据本申请实施例的小程序控制方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。如图9所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器901为例。存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的小程序控制方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的小程序控制方法。存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的小程序控制方法对应的程序指令/模块(例如,附图7所示的确定模块710、第一控制模块720和第二控制模块730)。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的小程序控制方法。存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据小程序控制方法的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至小程序控制方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。小程序控制方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图9中以通过总线连接为例。输入装置903可接收输入的数字或字符信息,以及产生与小程序控制方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、互联网和区块链网络。计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。本申请实施例提供的技术方案,通过确定宿主应用上是否有待重启的目标小程序,若有待重启的目标小程序,则控制目标小程序清除目标小程序页面栈中的数据及目标资源数据,并控制目标小程序绑定清除数据后的目标小程序页面栈,重新下载目标资源数据,且通过目标程序页面栈和重新下载的目标资源数据重启目标小程序。由此,实现在小程序运行过程中出现异常情况时,重新加载小程序,而无需离开小程序,从而增加了小程序的使用时长及用户留存数据,减少了小程序白屏率,提升了用户体验。应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1