CN114327691A - 应用程序处理方法、装置、设备及存储介质 - Google Patents
应用程序处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114327691A CN114327691A CN202111509419.6A CN202111509419A CN114327691A CN 114327691 A CN114327691 A CN 114327691A CN 202111509419 A CN202111509419 A CN 202111509419A CN 114327691 A CN114327691 A CN 114327691A
- Authority
- CN
- China
- Prior art keywords
- locking
- lock
- lock file
- webview
- file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 268
- 238000007781 pre-processing Methods 0.000 claims abstract description 28
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003672 processing method Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种应用程序处理方法、装置、设备及存储介质,该方法包括:在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;执行与尝试加锁结果对应的预处理操作,使得目标进程用到对应的WebView时,应用程序所在的操作系统能够对锁文件加锁成功。如此,避免了多进程使用WebView因加锁失败导致的应用程序崩溃,无法正常使用的问题。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种应用程序处理方法、装置、设备及存储介质。
背景技术
WebView是用于加载网页的组件,也即网页视图。一个应用程序中可以包括多个进程(例如,一个主进程和多个子进程),多个进程都可能用到WebView。目前,安卓系统从9.0版本开始的高版本中开启了新特性,应用程序不能在多个进程中使用同一个WebView数据目录,也即不允许多个进程使用同一个数据目录的WebView。为解决该问题,可以使用安卓系统官方提供的应用程序接口(API,Application Programming Interface),为每个子进程设置不同的数据目录后缀并加锁占用。但是,相关技术中,对于某些设备来说,由于安装的安卓系统有一些定制化的逻辑,采用该为每个子进程设置不同的数据目录后缀的方案时,受定制化的逻辑的影响,非常容易出现加锁失败的情况,导致应用程序崩溃,用户无法正常使用。
发明内容
本申请的目的是提供一种应用程序处理方法、装置、设备及存储介质,以解决相关技术中存在的问题。
本申请的目的是通过以下技术方案实现的:
第一方面,本申请实施例提供一种应用程序处理方法,包括:
在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;
执行与尝试加锁结果对应的预处理操作,使得目标进程用到对应的WebView时,应用程序所在的操作系统能够对锁文件加锁成功。
在一种实施方式中,在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,包括:
在目标进程启动的过程中,预先对锁文件尝试加锁。
在一种实施方式中,在目标进程启动的过程中,预先对锁文件尝试加锁,包括:
在目标进程启动初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,在目标进程启动初始化的过程中,对锁文件尝试加锁,包括:
在目标进程对应的Application组件初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,执行与尝试加锁结果对应的预处理操作,包括:
若尝试加锁结果为加锁成功,取消对锁文件的加锁;
若尝试加锁结果为加锁失败,删除锁文件,并重新创建锁文件。
在一种实施方式中,在预先对目标进程对应的WebView数据目录中的锁文件尝试加锁之前,还包括:
获取锁文件的路径信息;
基于路径信息,查找锁文件;
预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,包括:
在查找到锁文件的情况下,预先对锁文件尝试加锁。
在一种实施方式中,获取锁文件的路径信息,包括:
按照预设路径规则,生成锁文件的路径信息。
第二方面,本申请实施例提供一种应用程序处理装置,包括:
尝试加锁模块,用于在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;
预处理模块,用于执行与尝试加锁结果对应的预处理操作,使得目标进程用到对应的WebView时,应用程序所在的操作系统能够对锁文件加锁成功。
在一种实施方式中,尝试加锁模块,具体用于:
在目标进程启动的过程中,预先对锁文件尝试加锁。
在一种实施方式中,尝试加锁模块,具体用于:
在目标进程启动初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,尝试加锁模块,具体用于:
在目标进程对应的Application组件初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,预处理模块,具体用于:
若尝试加锁结果为加锁成功,取消对锁文件的加锁;
若尝试加锁结果为加锁失败,删除锁文件,并重新创建锁文件。
在一种实施方式中,还包括路径获取模块,用于在预先对目标进程对应的WebView数据目录中的锁文件尝试加锁之前,获取锁文件的路径信息;
文件查找模块,用于基于路径信息,查找锁文件;
尝试加锁模块,具体用于:
在查找到锁文件的情况下,预先对锁文件尝试加锁。
在一种实施方式中,路径获取模块,具体用于:
按照预设路径规则,生成锁文件的路径信息。
第三方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,该处理器执行所述计算机程序时实现如第一方面任一的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面任一的方法。
上述技术方案中的优点或有益效果至少包括:由于在目标进程用到WebView之前,可以预先对目标进程对应的WebView数据目录的锁文件尝试加锁,并可以执行与尝试加锁结果对应的预处理操作,因此,能够预先发现加锁可能出现的问题并对其进行预处理,使得后续目标进程执行过程中用到对应的WebView时,操作系统真正的对WebView数据目录中的锁文件加锁的过程中,避免出现无法将目标进程的名称写入至WebView数据目录中的锁文件中的问题。在本实施例中,在若尝试加锁结果为加锁成功,则取消对WebView数据目录中的锁文件的加锁,若尝试加锁结果为加锁失败,则通过预处理操作来删除WebView数据目录中的锁文件,重新创建空的锁文件,从而能够对WebView数据目录中的锁文件成功加锁,避免了多进程使用WebView因加锁失败导致的应用程序崩溃,无法正常使用的问题。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用程序处理方法的流程图;
图2是本申请实施例提供的一种应用程序处理方法的流程图;
图3是本申请实施例提供的一种应用程序处理装置的结构示意图;
图4是本申请实施例提供的一种应用程序处理装置的结构示意图;
图5是本申请实施例提供的用来实现应用程序处理方法的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本申请实施例提供的一种应用程序处理方法的流程图。
本实施例提供一种应用程序处理方法。该方法可以由应用程序中的功能模块执行。如图1所示,该应用程序处理方法至少包括如下步骤:
步骤101、在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果。
其中,应用程序中包括多个进程(简称多进程),例如,包括一个主进程和多个子进程。有些进程执行过程中会用到WebView以加载网页。这里,在进程执行过程中用到WebView的进程即为上述目标进程。该目标进程可以为主进程,也可以为子进程。目标进程用到WebView时,需要调用WebView的数据文件,该数据文件存放在WebView数据目录(即WebView文件夹)。目标进程用到WebView之前具体可以是目标进程发出WebView的调用指令之前。
应用程序所在的操作系统,也即安装该应用程序的操作系统,对WebView数据目录的使用方式有相应的规定。以安卓系统这种操作系统举例,从9.0版本开始的高版本中,应用程序不能在多个进程中使用同一个WebView数据目录,也即不允许多个进程使用同一个数据目录的WebView。相关技术中的解决方案是,使用安卓系统提供的API为每个子进程设置不同的数据目录后缀加以区分。一般将子进程的名称作为后缀。例如,主进程对应的WebView数据目录为app_webview,子进程a对应的WebView数据目录为app_webview_a,子进程b对应的WebView数据目录为app_webview_b。安卓系统在检测到进程WebView的调用指令时,会对WebView进行初始化。为了保证进程使用的WebView数据目录不被其它进程占用,在安卓系统对WebView初始化时,可以对该进程的WebView数据目录进行加锁,此时,WebView数据目录中会有一个加锁的锁文件,以表示当前的WebView数据目录已被占用。如果加锁失败,安卓系统就会抛出异常,导致应用程序崩溃,无法正常使用。在某些设备中,由于安装的安卓系统有一些定制化的逻辑,兼容性不好,采用该为每个子进程设置不同的数据目录后缀的方案时,受定制化的逻辑的影响,非常容易出现加锁失败的情况。
本步骤中,在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,也就是说,对于每个目标进程,在该目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁。如此,应用程序可以先于操作系统对目标进程对应的WebView数据目录加锁。
步骤102、执行与尝试加锁结果对应的预处理操作,使得目标进程用到对应的WebView时,应用程序所在的操作系统能够对锁文件加锁成功。
如果尝试加锁结果表示加锁出现问题,通过预处理操作可以预先进行处理,在目标进程用到对应的WebView时,操作系统真正的对锁文件进行加锁时,就不会出现无法将目标进程的名称写入至WebView数据目录中的锁文件中的问题,能够对锁文件加锁成功。
本方案中,由于在目标进程用到WebView之前,可以预先对目标进程对应的WebView数据目录的锁文件尝试加锁,并可以执行与尝试加锁结果对应的预处理操作,因此,能够预先发现加锁可能出现的问题并对其进行预处理,使得后续目标进程执行过程中用到对应的WebView时,操作系统真正的对WebView数据目录中的锁文件加锁的过程中,避免出现无法将目标进程的名称写入至WebView数据目录中的锁文件中的问题。在本实施例中,在若尝试加锁结果为加锁成功,则取消对WebView数据目录中的锁文件的加锁,若尝试加锁结果为加锁失败,则通过预处理操作来删除WebView数据目录中的锁文件,重新创建空的锁文件,从而能够对WebView数据目录中的锁文件成功加锁,避免了多进程使用WebView因加锁失败导致的应用程序崩溃,无法正常使用的问题。
本方案可以但不限于应用在安卓系统9.0以上的版本中。在执行步骤101之前,可以先判断当前操作系统的版本是否高于或者等于预设版本,如果是,则执行步骤101。实际应用中,该预设版本可以为安卓系统9.0。对于安卓系统来说,由于在低于安卓系统9.0的版本中,允许多个进程使用同一个数据目录的WebView,无需加锁占用。因此,如果判断出当前操作系统的版本低于安卓系统9.0,可以省略尝试加锁的步骤,如果判断出当前操作系统的版本高于或者等于安卓系统9.0,再在目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁。如此,对于符合要求的操作系统的版本才进行尝试加锁,利于提高处理速度。
由于需要在目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,选择一个合适的尝试加锁的时机非常重要,实际应用中,可以结合实际情况选择合适的尝试加锁的时机。下面举例说明几种方案。
在一种实施方式中,步骤101中,在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,其具体实现方式可以包括:在目标进程执行的过程中,用到WebView之前,预先对锁文件尝试加锁。实际应用中,需要根据实际的目标进程执行的逻辑,确定合适的尝试加锁的时机,只要在目标进程用到WebView之前即可。
例如,在目标进程执行的过程中,当需要用到WebView时,会生成WebView的调用指令然后发出,基于此,可以在目标进程启动后首次生成WebView的调用指令的过程中,预先对锁文件尝试加锁,并执行与尝试加锁结果对应的预处理操作,之后,生成WebView的调用指令并发出。本实施例中,将首次生成WebView的调用指令的时机,作为尝试加锁的时机,由于生成WebView的调用指令在发出WebView的调用指令之前,能够保证锁文件及时被尝试加锁,从而保证后续操作系统可以对锁文件加锁成功。
在一种实施方式中,步骤101中,在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,其具体实现方式可以包括:在目标进程启动的过程中,预先对锁文件尝试加锁。由于在目标进程启动的情况下,才可以调用WebView,也即目标进程启动的过程在调用WebView之前,因此,本实施例中,在目标进程启动的过程中,就预先对锁文件尝试加锁,能够保证锁文件及时被尝试加锁,从而进一步保证后续操作系统可以对锁文件加锁成功。并且,由于进程启动的时机容易确定,将进程启动的时机作为尝试加锁的时机,比在进程执行过程中寻找合适的尝试加锁的时机,实现更加简单。
需要说明的是,在应用程序启动时,需要启动主进程以及部分子进程,因此,目标进程可能在应用程序启动时就可以启动,那么,步骤101的具体实现方式可以是:在应用程序启动时,在目标进程启动的过程中,预先对锁文件尝试加锁。在应用程序完成启动之后,运行过程中,需要用到某些进程时,如果进程未启动,则需要先启动该进程,因此,目标进程也可能在应用程序运行过程中启动,那么,步骤101的具体实现方式也可以是:在应用程序运行时,在目标进程启动的过程中,预先对锁文件尝试加锁。
进程启动的过程可以包括创建进程、对创建的进程初始化,等等阶段。实际应用中,可以在进程启动的过程中具体选择一个合适的时机。在一种实施方式中,在目标进程启动的过程中,预先对锁文件尝试加锁,其具体实现方式可以包括:在目标进程启动初始化的过程中,预先对锁文件尝试加锁。目标进程启动时,都需要进行初始化,因此,可以将进程启动初始化的时机,作为尝试加锁的时机,能够保证锁文件及时被尝试加锁,从而进一步保证后续操作系统可以对锁文件加锁成功。
对于安卓系统来说,Application组件、Activity组件等是安卓系统的主要组件。进程启动初始化的过程可以包括Application组件初始化的过程、Activity组件初始化的过程,等等。实际应用中,可以结合实际情况选择合适的组件初始化的过程,进行尝试加锁。
基于此,在一种实施方式中,在目标进程启动初始化的过程中,对锁文件尝试加锁,其具体实现方式可以包括:在目标进程对应的Application组件初始化的过程中,预先对锁文件尝试加锁。
每个进程在启动初始化的过程中,都会用到Application组件,Application组件初始化位于进程生命周期靠前的位置。本实施例中,将Application组件初始化的时机,作为尝试加锁的时机,能够尽早进行尝试加锁,也即能够保证在调用WebView之前及时对锁文件尝试加锁,从而进一步保证后续操作系统可以对锁文件加锁成功。
实施中,可以在Application组件的attachBaseContext方法中添加尝试加锁的逻辑。attachBaseContext方法中可以写入开发者自己的逻辑。如此,可以通过Application组件的attachBaseContext方法,预先对锁文件尝试加锁,并执行与尝试加锁结果对应的预处理操作。
在一种实施例中,在执行与所述尝试加锁结果对应的预处理操作之后,还可以生成尝试加锁记录并保存。在目标进程执行的过程中,当需要用到WebView时,生成WebView的调用指令的过程中,确定是否存在尝试加锁记录,若存在该尝试加锁记录,则生成WebView的调用指令并发出。若不存在尝试加锁记录,发出尝试加锁指令。在该尝试加锁指令的触发下,预先对锁文件尝试加锁,并执行与尝试加锁结果对应的预处理操作,生成尝试加锁记录并保存,此时,则可以生成WebView的调用指令并发出。如此,通过尝试加锁记录,来保证在已经尝试加锁的情况下,发出WebView的调用指令以对WebView进行调用,避免了因操作系统对锁文件加锁失败导致应用程序崩溃的问题。
锁文件一般是以.lock为后缀的文件。在未加锁时,锁文件内为空。对锁文件加锁后,锁文件中会存储有当前占用WebView数据目录的进程的名称。对锁文件加锁的对象才持有锁,可以对锁文件取消加锁。取消加锁之后,才能再次加锁,否则会加锁失败。
预先对目标进程对应的WebView数据目录中的锁文件尝试加锁时,具体可以尝试将目标进程的名称写入锁文件中。如果无法将目标进程的名称写入锁文件中,则尝试加锁结果为加锁失败。如果可以将目标进程的名称写入锁文件中,则尝试加锁结果为加锁成功。
在一种实施方式中,步骤102中,执行与尝试加锁结果对应的预处理操作,其具体实现方式可以包括:若尝试加锁结果为加锁成功,取消对锁文件的加锁;若尝试加锁结果为加锁失败,删除锁文件,并重新创建锁文件。
这里,重新创建的锁文件是空的锁文件。空的锁文件是未加锁的锁文件,可以加锁。
如果尝试加锁结果为加锁成功,也即加锁没有问题,当前的锁文件可以正常加锁,这时,可以执行取消对锁文件的加锁(即释放文件锁)的预处理操作,如此,后续目标进程用到对应的WebView时,操作系统也可以对该锁文件加锁成功。如果尝试加锁结果为加锁失败,也即加锁出现问题,当前的锁文件不能正常加锁,这可能是操作系统在其它逻辑中已经对锁文件加锁且未取消导致的,但是,由于应用程序没有持有锁,无法取消加锁,这时,可以执行将锁文件删除并重建一个空的锁文件的预处理操作,由于空的锁文件是未加锁的锁文件,后续目标进程用到对应的WebView时,操作系统可以对该空的锁文件加锁成功,从而可以避免因加锁失败导致应用程序崩溃,无法正常使用的问题。
在一种实施方式中,在预先对目标进程对应的WebView数据目录中的锁文件尝试加锁之前,上述应用程序处理方法还可以包括:获取锁文件的路径信息;基于该路径信息,查找锁文件。相应的,步骤101中,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,其具体实现方式可以包括:在查找到锁文件的情况下,预先对锁文件尝试加锁。
实际应用中,目标进程对应的WebView数据目录中,可能还没有创建锁文件,例如在应用程序安装后首次启动的时候,在WebView初始化时,才会创建锁文件并加锁,这时,由于是新创建的空的锁文件,所以可以加锁成功。而在已经存在锁文件的情况下,则可能会出现加锁失败的问题。基于此,本实施例中,在尝试加锁之前,可以先通过路径信息找到锁文件,找到锁文件之后,再尝试加锁。如果未找到锁文件,则不需要尝试加锁。
在一种实施方式中,以上获取锁文件的路径信息,其具体实现方式可以包括:按照预设路径规则,生成锁文件的路径信息。本实施例中,采用统一的预设路径规则,可以快速的自动生成锁文件的路径信息,从而基于该路径信息对锁文件进行快速准确的查找。
预设路径规则可以根据实际情况进行设置。例如,可以利用WebView数据目录的特点,设置路径规则。
在前述高版本的安卓系统中,一般在主进程对应的WebView数据目录后面添加子进程的名称作为后缀,得到子进程对应的WebView数据目录。基于此,按照预设路径规则,生成锁文件的路径信息时,具体可以是根据当前目标进程名称,按照预设规则,生成当前目标进程对应的WebView数据目录中的锁文件的路径信息。
示例性地,预设路径规则可以为主进程WebView数据目录名称和目标进程的名称的组合/预设锁文件名称。实施中,可以预先判断目标进程为主进程还是子进程。如果目标进程为主进程,目标进程的名称这部分为空,如果目标进程为子进程,目标进程的名称这部分为子进程的名称。
例如,预设路径规则为:/app_webview_suffix/webview_data.lock。其中,app_webview表示主进程WebView数据目录名称,Suffix表示目标进程的名称,webview_data.lock表示锁文件的名称。
下面以具体的应用场景为例,对本申请实施例提供的一种应用程序处理方法进行更加详细地说明。
本实施例的应用场景主要解决的问题是:在某些特定设备使用安卓系统9.0版本以上的操作系统时,应用程序的多进程使用WebView的过程中,容易出现应用程序崩溃的问题。
由于安卓系统会在WebView初始化时对进程对应的WebView数据目录的文件锁进行加锁,如果加锁失败,就会抛出异常导致应用程序崩溃,所以我们的解决方案是,在进程启动时,尝试对进程对应的WebView数据目录的文件锁进行加锁,如果加锁成功就取消对锁文件的加锁,如果加锁失败则删除该文件锁并重新创建文件锁。
不论是在应用程序启动时启动的进程,还是在应用程序运行时启动的进程,在每个进程启动初始化的过程中,都会对Application组件进行初始化,可以在Application的attachBaseContext方法中添加以下逻辑:
以用到WebView的进程为目标进程,针对每个目标进程执行如图2所示的应用程序处理方法。具体的:
开始流程,执行步骤201、根据当前目标进程名称,按照预设规则,生成当前目标进程对应的WebView数据目录中的锁文件的路径信息,执行步骤202。本步骤具体实现方式可以参考以上相关实施例,此处不再赘述。
步骤202、基于路径信息,判断锁文件是否存在(即查找锁文件)。如果锁文件不存在,则直接返回(return),不做尝试加锁的处理。如果锁文件存在,执行步骤203。
步骤203、预先对锁文件尝试加锁。
步骤204、如果加锁成功,取消对锁文件的加锁。
步骤205、如果加锁失败,删除锁文件并重新创建锁文件。
至此,流程结束。
通过以上方案,彻底解决了以上应用程序崩溃无法正常使用的问题。
图3是本申请实施例的应用程序处理装置的结构示意图。如图3所示,本实施例提供的应用程序处理装置300包括:
尝试加锁模块301,用于在应用程序中多个目标进程用到WebView之前,预先对目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;
预处理模块302,用于执行与尝试加锁结果对应的预处理操作,使得目标进程用到对应的WebView时,应用程序所在的操作系统能够对锁文件加锁成功。
在一种实施方式中,尝试加锁模块301,具体用于:
在目标进程启动的过程中,预先对锁文件尝试加锁。
在一种实施方式中,尝试加锁模块301,具体用于:
在目标进程启动初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,尝试加锁模块301,具体用于:
在目标进程对应的Application组件初始化的过程中,预先对锁文件尝试加锁。
在一种实施方式中,预处理模块302,具体用于:
若尝试加锁结果为加锁成功,取消对锁文件的加锁;
若尝试加锁结果为加锁失败,删除锁文件,并重新创建锁文件。
在一种实施方式中,如图4所示,还包括路径获取模块303,用于在预先对目标进程对应的WebView数据目录中的锁文件尝试加锁之前,获取锁文件的路径信息;
文件查找模块304,用于基于路径信息,查找锁文件;
尝试加锁模块301,具体用于:
在查找到锁文件的情况下,预先对锁文件尝试加锁。
在一种实施方式中,路径获取模块303,具体用于:
按照预设路径规则,生成锁文件的路径信息。
本申请实施例各装置中的各模块的功能可以参见上述应用程序处理方法实施例中的对应描述,在此不再赘述。
本申请实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现如以上任一实施例中的应用程序处理方法。
图5是本申请实施例提供的一种电子设备的结构示意图。如图5所示,该电子设备可以包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。处理器501可以调用存储器503中的计算机程序,以执行以上任一实施例中的应用程序处理方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如以上任一实施例中的应用程序处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种应用程序处理方法,其特征在于,包括:
在应用程序中多个目标进程用到WebView之前,预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;
执行与所述尝试加锁结果对应的预处理操作,使得所述目标进程用到对应的WebView时,所述应用程序所在的操作系统能够对所述锁文件加锁成功。
2.根据权利要求1所述的方法,其特征在于,所述在应用程序中多个目标进程用到WebView之前,预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁,包括:
在所述目标进程启动的过程中,预先对所述锁文件尝试加锁。
3.根据权利要求2所述的方法,其特征在于,所述在所述目标进程启动的过程中,预先对所述锁文件尝试加锁,包括:
在所述目标进程启动初始化的过程中,预先对所述锁文件尝试加锁。
4.根据权利要求3所述的方法,其特征在于,所述在所述目标进程启动初始化的过程中,对所述锁文件尝试加锁,包括:
在所述目标进程对应的Application组件初始化的过程中,预先对所述锁文件尝试加锁。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述执行与所述尝试加锁结果对应的预处理操作,包括:
若所述尝试加锁结果为加锁成功,取消对所述锁文件的加锁;
若所述尝试加锁结果为加锁失败,删除所述锁文件,并重新创建锁文件。
6.根据权利要求1-4任一项所述的方法,其特征在于,在所述预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁之前,还包括:
获取所述锁文件的路径信息;
基于所述路径信息,查找所述锁文件;
所述预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁,包括:
在查找到所述锁文件的情况下,预先对所述锁文件尝试加锁。
7.根据权利要求6所述的方法,其特征在于,所述获取所述锁文件的路径信息,包括:
按照预设路径规则,生成所述锁文件的路径信息。
8.一种应用程序处理装置,其特征在于,包括:
尝试加锁模块,用于在应用程序中多个目标进程用到WebView之前,预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁,得到尝试加锁结果;
预处理模块,用于执行与所述尝试加锁结果对应的预处理操作,使得所述目标进程用到对应的WebView时,所述应用程序所在的操作系统能够对所述锁文件加锁成功。
9.根据权利要求8所述的装置,其特征在于,所述尝试加锁模块,具体用于:
在所述目标进程启动的过程中,预先对所述锁文件尝试加锁。
10.根据权利要求9所述的装置,其特征在于,所述尝试加锁模块,具体用于:
在所述目标进程启动初始化的过程中,预先对所述锁文件尝试加锁。
11.根据权利要求10所述的装置,其特征在于,所述尝试加锁模块,具体用于:
在所述目标进程对应的Application组件初始化的过程中,预先对所述锁文件尝试加锁。
12.根据权利要求8所述的装置,其特征在于,所述预处理模块,具体用于:
若所述尝试加锁结果为加锁成功,取消对所述锁文件的加锁;
若所述尝试加锁结果为加锁失败,删除所述锁文件,并重新创建锁文件。
13.根据权利要求8所述的装置,其特征在于,还包括路径获取模块,用于在所述预先对所述目标进程对应的WebView数据目录中的锁文件尝试加锁之前,获取所述锁文件的路径信息;
文件查找模块,用于基于所述路径信息,查找所述锁文件;
所述尝试加锁模块,具体用于:
在查找到所述锁文件的情况下,预先对所述锁文件尝试加锁。
14.根据权利要求13所述的装置,其特征在于,所述路径获取模块,具体用于:
按照预设路径规则,生成所述锁文件的路径信息。
15.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111509419.6A CN114327691A (zh) | 2021-12-10 | 2021-12-10 | 应用程序处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111509419.6A CN114327691A (zh) | 2021-12-10 | 2021-12-10 | 应用程序处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327691A true CN114327691A (zh) | 2022-04-12 |
Family
ID=81050210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111509419.6A Pending CN114327691A (zh) | 2021-12-10 | 2021-12-10 | 应用程序处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327691A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070214161A1 (en) * | 2006-03-10 | 2007-09-13 | Prabhakar Goyal | System and method for resource lock acquisition and reclamation in a network file system environment |
CN107153569A (zh) * | 2017-03-23 | 2017-09-12 | 深信服科技股份有限公司 | 虚拟机读写失败的处理方法及装置 |
CN110908968A (zh) * | 2019-11-14 | 2020-03-24 | 浪潮电子信息产业股份有限公司 | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 |
CN111258976A (zh) * | 2018-12-03 | 2020-06-09 | 北京京东尚科信息技术有限公司 | 分布式锁实现方法、系统、设备及存储介质 |
CN113448976A (zh) * | 2021-06-30 | 2021-09-28 | 腾讯科技(上海)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN113672966A (zh) * | 2020-05-13 | 2021-11-19 | 上海亦存网络科技有限公司 | 文件访问控制方法和系统 |
-
2021
- 2021-12-10 CN CN202111509419.6A patent/CN114327691A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070214161A1 (en) * | 2006-03-10 | 2007-09-13 | Prabhakar Goyal | System and method for resource lock acquisition and reclamation in a network file system environment |
CN107153569A (zh) * | 2017-03-23 | 2017-09-12 | 深信服科技股份有限公司 | 虚拟机读写失败的处理方法及装置 |
CN111258976A (zh) * | 2018-12-03 | 2020-06-09 | 北京京东尚科信息技术有限公司 | 分布式锁实现方法、系统、设备及存储介质 |
CN110908968A (zh) * | 2019-11-14 | 2020-03-24 | 浪潮电子信息产业股份有限公司 | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 |
CN113672966A (zh) * | 2020-05-13 | 2021-11-19 | 上海亦存网络科技有限公司 | 文件访问控制方法和系统 |
CN113448976A (zh) * | 2021-06-30 | 2021-09-28 | 腾讯科技(上海)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9792105B2 (en) | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method | |
US7734945B1 (en) | Automated recovery of unbootable systems | |
US7908521B2 (en) | Process reflection | |
US6438749B1 (en) | Method and system for restoring a computer to its original state after an unsuccessful patch installation attempt | |
US6381694B1 (en) | System for automatic recovery from software problems that cause computer failure | |
US8621452B2 (en) | Device driver rollback | |
CN104572229B (zh) | 嵌入式系统的固件升级方法以及固件升级装置 | |
US20040255106A1 (en) | Recovery of operating system configuration data by firmware of computer system | |
CN107220074B (zh) | 对支撑层软件功能的访问、升级方法及装置 | |
US6205561B1 (en) | Tracking and managing failure-susceptible operations in a computer system | |
CN108829449B (zh) | 一种bios启动操作系统的方法、装置、设备及介质 | |
KR20110055841A (ko) | 시스템의 복구 방법 및 이를 지원하는 장치 | |
CN115113905A (zh) | 固件升级方法和固件升级装置 | |
CN113157303A (zh) | 升级方法、嵌入式系统、终端及计算机存储介质 | |
US6523103B2 (en) | Disablement of a write filter stored on a write-protected partition | |
CN113703823A (zh) | 一种bmc固件升级方法、装置、电子设备及存储介质 | |
EP3798831B1 (en) | Resilient upgradable boot loader with power reset | |
CN114115958A (zh) | 程序启动方法及终端设备 | |
CN114327691A (zh) | 应用程序处理方法、装置、设备及存储介质 | |
CN112685063B (zh) | 特征库更新方法、装置、网络设备及可读存储介质 | |
CN115291925A (zh) | 一种bmc升级方法、系统、设备及存储介质 | |
CN114510375A (zh) | 一种Flash芯片数据区域动态共享系统及方法 | |
CN112559060A (zh) | 基于文件pagecache预读加速开机启动的方法及装置 | |
US9081727B2 (en) | Method, apparatus and computer program for loading files during a boot-up process | |
CN112579113A (zh) | 应用程序的升级方法、装置、存储介质及终端 |
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 |