CN107832100A - 一种apk插件的加载方法及其终端 - Google Patents

一种apk插件的加载方法及其终端 Download PDF

Info

Publication number
CN107832100A
CN107832100A CN201711022550.3A CN201711022550A CN107832100A CN 107832100 A CN107832100 A CN 107832100A CN 201711022550 A CN201711022550 A CN 201711022550A CN 107832100 A CN107832100 A CN 107832100A
Authority
CN
China
Prior art keywords
plug
units
thread
loaded
apk
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
CN201711022550.3A
Other languages
English (en)
Other versions
CN107832100B (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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management Co 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN201711022550.3A priority Critical patent/CN107832100B/zh
Publication of CN107832100A publication Critical patent/CN107832100A/zh
Application granted granted Critical
Publication of CN107832100B publication Critical patent/CN107832100B/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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Abstract

本发明适用于网络页面技术领域,提供了一种APK插件的加载方法及其终端,包括:接收页面加载请求,并生成页面加载请求对应的页面;确定页面中包含的待加载APK插件;通过插件加载线程从待加载APK插件对应的服务器中,下载待加载APK插件;若接收到待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;释放所述运行状态为结束运行的进程所占用的内存;通过所述主线程加载待加载APK插件。本发明解决了现有的APK插件的加载技术,插件加载时间长,且加载成功率较低的问题。

Description

一种APK插件的加载方法及其终端
技术领域
本发明属于网络页面技术领域,尤其涉及一种APK插件的加载方法及其终端。
背景技术
随着网络页面功能愈来愈强大,常规的Flash插件已经无法满足当前网络页面的功能需求,特别对于Android系统的设备,其网络页面中常常包含大量的安卓系统安装文件(Android Package,APK)插件,以丰富页面的表现力以及渲染能,因此现有的页面生成技术,在生成网络页面的同时,若用户使用该网络页面中某些个性化功能时,设备需要从服务器中对APK插件进行动态加载。
然而现有的APK插件的加载技术,主要是在用户发起调用请求时,终端设备才通过主线程从服务器中下载该APK插件,若对于APK插件的文件数据量较大的情况,则需要等待较长的才能完成APK插件的加载,甚至会超过最大进程运行时长,而导致主线程识别该加载操作为应用无应答(ANR,Application Not Response),导致加载失败。可见,现有的APK插件的加载技术,插件加载时间长,且加载成功率较低。
发明内容
有鉴于此,本发明实施例提供了一种APK插件的加载方法及其终端,以解决然而现有的APK插件的加载技术,对于APK插件的文件数据量较大的情况,则需要等待较长的才能完成APK插件的加载,甚至会超过最大进程运行时长,导致加载失败,加载成功率较低的问题。
本发明实施例的第一方面提供了一种APK插件的加载方法,所述APK插件的加载方法包括:
接收页面加载请求,并生成所述页面加载请求对应的页面;
确定所述页面中包含的待加载APK插件;
选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
释放所述运行状态为结束运行的进程所占用的内存;
通过所述主线程加载所述待加载APK插件。
本发明实施例的第二方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收页面加载请求,并生成所述页面加载请求对应的页面;
确定所述页面中包含的待加载APK插件;
选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
释放所述运行状态为结束运行的进程所占用的内存;
通过所述主线程加载所述待加载APK插件。
本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收页面加载请求,并生成所述页面加载请求对应的页面;
确定所述页面中包含的待加载APK插件;
选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
释放所述运行状态为结束运行的进程所占用的内存;
通过所述主线程加载所述待加载APK插件。
实施本发明实施例提供的一种APK插件的加载方法及其终端具有以下有益效果:
本发明实施例通过在用户发起的页面加载请求后,在生成对应的页面的同时,还进行APK插件的预加载操作,该预加载操作具体为:终端设备首先确定该页面中包含的待加载APK插件,并在主线程中查询空闲的子线程对待加载APK插件进行异步下载操作,并存储于本地的存储单元内,以便用户发起APK插件加载请求时能够即时从缓存中提取出对应的APK插件。终端设备若接收到用户需要加载对应的APK插件,则从首先确定当前的内存容量,是否具备足够的空间加载该APK插件,若不具备足够的空间加载该APK插件,则有可能是内存存在内存泄漏的情况,因此将对该异常情况进行处理,确定当前被占用的内存所对应的进程,生成进程列表,并获取各个进程对应的运行状态,若存在运行状态为结束运行的进程但仍占用内存的情况,则表明该进程在结束后并未归还申请的硬件资源,将其识别为异常占用进程,继而终端设备将释放上述异常占用进程所占用的内存,以使有足够的内存空间加载该APK插件。与现有的APK插件的加载技术相比,本发明实施例在用户生成页面的时候,则通过主线程外的其他子线程进行异步APK插件的下载操作,从而在用户浏览完页面后,需要调用APK插件时,直接从本地进行提取加载,减少了用户所需等待的时间。另一方面,由于该APK插件的下载操作并非通过主线程进行同步执行,而是通过子线程进行异步执行,因此主线程并不会因为APK加载时间过程而判定ANR,导致加载失败需要重新加载,也提高了APK的加载效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种APK插件的加载方法的实现流程图;
图2是本发明第二实施例提供的一种APK插件的加载方法的具体实现流程图;
图3是本发明第三实施例提供的一种APK插件的加载方法S102的具体实现流程图;
图4是本发明第四实施例提供的一种APK插件的加载方法S103的具体实现流程图;
图5是本发明第五实施例提供的一种APK插件的加载方法的具体实现流程图;
图6是本发明一实施例提供的一种APK插件的加载终端的结构框图;
图7是本发明一实施例提供的一种终端设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过在用户发起的页面加载请求后,在生成对应的页面的同时,还进行APK插件的预加载操作,该预加载操作具体为:确定该页面中包含的待加载APK插件,并在主线程中查询空闲的子线程对待加载APK插件进行异步下载操作,并存储于本地的存储单元内,以便用户发起APK插件加载请求时能够即时从缓存中提取出对应的APK插件。若接收到用户需要加载对应的APK插件,则从首先确定当前的内存容量,是否具备足够的空间加载该APK插件,若不具备足够的空间加载该APK插件,则有可能是内存存在内存泄漏的情况,因此将对该异常情况进行处理,确定当前被占用的内存所对应的进程,生成进程列表,并获取各个进程对应的运行状态,若存在运行状态为结束运行的进程但仍占用内存的情况,则表明该进程在结束后并未归还申请的硬件资源,将其识别为异常占用进程,继而将释放上述异常占用进程所占用的内存,以使有足够的内存空间加载该APK插件,解决了现有的APK插件的加载技术,主要是在用户发起调用请求时,通过主线程从服务器中下载该APK插件,若对于APK插件的文件数据量较大的情况,则需要等待较长的才能完成APK插件的加载,甚至会超过最大进程运行时长,而导致主线程识别该加载操作为应用无应答(ANR,Application Not Response),导致加载失败,加载成功率较低的问题。
在本发明实施例中,流程的执行主体为APK插件的加载终端,终端设备包括手机、计算机设备、平板电脑、服务器等终端,特别地,该终端设备包括显示模块,通过该显示模块将加载APK插件后生成的显示界面输出给用户,该显示模块可以为:显示器、触控屏、投影设备等。图1示出了本发明第一实施例提供的APK插件的加载方法的实现流程图,详述如下:
在S101中,接收页面加载请求,并生成所述页面加载请求对应的页面。
在本实施例中,用户需要加载页面时,将向终端设备发起一个页面加载请求,例如用户可在终端设备的显示界面中,输入该页面对应的域名并点击跳转按钮,终端设备将根据该域名生成对应的页面加载请求;用户也可以通过点击显示界面中相应的连接或图标,来发起该页面加载请求。其中,该页面加载请求包含所需加载的目标页面的网络地址或页面标识。
在本实施例中,终端设备在获取到用户发起的页面加载请求后,将提取该页面加载请求中包含的目标页面的网络地址或页面标识,继而根据获取得到的页面信息,与该页面对应的服务器进行通信连接,继而通过主线程从服务器中取回该页面对应的页面数据到本地内存中,继而通过获取到的页面数据,生成该页面加载请求对应的页面。
在本实施例中,终端设备获取的页面数据主要为该页面本身所显示的数据,例如显示的文字、图片、Flash动画,以及各个链接对应的目标地址等无需用户操作的内容,但其他需要用户调用的插件或数据将不在本次加载过程中获取。例如页面中包含一播放器按钮,用户可通过点击播放背景音乐,在该情况下,本次加载的页面将不包含所需播放的背景音乐数据以及播放器插件数据。
在S102中,确定所述页面中包含的待加载APK插件。
在本实施例中,由于S101中生成的页面只包含页面中的基本内容,一般情况下,该页面中包含的插件是需要用户调用时才进行加载,但本发明实施例为了需要对APK插件进行预加载,因此首先确定该页面中包含的待加载APK插件,继而可以在用户浏览页面的过程中逐步下载各个待加载APK插件,从而减少用户在正式调用时所需等待的时间。
在本实施例中,生成的页面中需要加载APK插件的区域均关联有超链接,当用户点击该APK插件对应的区域时,终端设备将根据该区域关联的超链接与该APK插件的服务器通信,继而下载对应的APK插件。因此,终端设备可根据各个超链接对应的目的地址,确定该链接是否为加载APK插件的链接,从而获取到页面中包含的待加载APK插件。
可选地,终端设备还可以根据各个链接的后缀,确定该链接是否为加载APK插件的连接,由于部分链接指向的地址一般为APK插件的在服务器中对应的存储地址,因此大部分链接的后缀一般为APK的文件名,例如://video.apk,终端设备若检测到某一链接中的后续是以.apk结尾,则可判定该链接为加载APK插件的链接。
需要说明的是,一个页面中可包含多个待加载APK插件,因此在S102中获取得到的待加载APK插件的数量可以为一个也可以为多个。特别地,若该页面中不包含待加载的APK插件,终止该加载流程,直接显示该页面,并响应用户响应的操作。
在S103中,选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式。
在本实施例中,由于通过主线程下载APK插件时,若插件文件数据量较大,则需要较长时间进行下载,而主线程同一时间只能执行一个任务,为了避免主线程被长期占用,因而设置有最大的占用时长,此时,若APK插件所下载所需的时长大于该最大的占用时长,终端设备将判定此时的执行的进程无应答,即ANR,识别本次下载失败,因此为了避免上述情况的发生,APK插件的下载将不通过主线程执行,而是在主线程中选取一条子线程来对APK插件进行下载操作。
在本实施例中,由于主线程在同一时刻只可以响应一个进程,因此为了提高主线程的处理效率,终端设备将在主线程中分配一定的资源来构建子线程,通过子线程来完成部分进程,即一条主线程内可包含多条子线程。终端设备将从隶属主线程下的多条子线程中,选取运行状态为空闲的子线程作为进行本次APK插件下载的线程,即上述的插件加载线程。需要说明的是,为了避免下载时间过长而被识别为ANR,终端设备会把插件加载线程的运行模式设置为异步运行模式,以便该子线程通过异步下载的方式进行APK插件下载。
需要说明的是,若S102中获取得到的待加载APK插件的数量为多个,则在S103中,可根据待加载APK插件的数量,选取与该数量相等的空闲的子线程进行下载操作,以便每一条线程下载相应的待加载APK插件。可选地,终端设备选取的子线程数目可以小于待加载APK插件的数量,在该情况下,终端设备可根据各个APK插件的优先级,确定每次需要下载的APK插件。其中,该APK插件的优先级与该插件的调用次数以及每次调用的使用时长相关。
可选地,在本实施例中,终端设备对插件加载线程的相关参数设置完成后,将与待加载APK插件的服务器进行通信,以便获取该待加载APK插件对应的文件数据。由于页面数据的服务器并不一定是APK插件的服务器,因此即便终端设备已与页面数据对应的服务器建立通信连接,但仍需要与APK插件的服务器进行通信连接。例如某个腾讯页面中加载有优酷的视频播放器,则终端设备在加载页面的过程中可能与腾讯的服务器建立通信连接,但优酷的视频播放器并非存储与腾讯的服务器内,因此终端设备还需与该插件对应的服务器建立另一条通信连接。另一方面,由于本次下载操作并非通过主线程进行下载,是子线程与服务器进行通信下载该APK插件,因此需要为该插件加载线程配置一条独立的通信链路。
在本实施例中,终端设备查询该插件加载线程的端口号,以及待加载APK插件对应的服务器的插件下载端口号,根据该插件下载端口号以及对应的服务器的网络地址,生成一条通信连接建立请求,并通过插件加载线程的端口进行发送。服务器通过插件下载端口号接收到该连接建立请求后,将与终端设备建立一条通信链路,至此,终端设备可与待加载APK插件进行数据通信。
在本实施例中,终端设备在确定通信链路已建立完成后,将通过该通信链路向服务器发送APK插件下载请求,其中该APK插件下载请求中包含待加载APK插件的文件标识。服务器在接收到下载请求后,将提取该请求中包含的文件标识,查询该文件标识对应的APK插件,并将该APK插件对应的文件数据通过通信链路返回给终端设备。
在本实施例中,终端设备在接收到服务器返回的待加载插件的文件数据后,将存储于本地的存储模块内,具体地,该存储模块为缓存模块。该缓存模块主要用户存储与当前显示页面相关的文件数据。
在S104中,若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量。
在本实施例中,用户在浏览网页的过程中,若需要对该页面中某些APK插件进行操作使用时,将生成一条待加载APK插件的调用请求,终端设备在接收到该调用请求后,将执行插件加载流程。由于APK插件的加载需要占用终端设备一定的内容容量,即需要将APK插件加载到内存中进行解压并运行,因此需要确保当前终端设备存在足够的内容容量进行加载操作。
在本实施例中,终端设备需判定调用请求中对应的APK插件是否下载完毕,若该APK插件已经下载完成,则直接从本地的存储单元中提取待加载的APK插件的文件数据,并执行S105的相关操作;若待加载APK插件并未下载完毕,则继续通过插件加载线程进行下载,直到下载完成后,再执行S105的相关操作。
在S105中,若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态。
在本实施例中,终端设备将待加载APK插件的文件数据量与当前设备的空闲内存容量进行比较。若APK插件的文件数据量小于或等于空闲内存容量,则表示终端设备具有足够的内存调用该待加载APK插件,因此可执行S107的相关操作;若APK插件的文件数据量大于空闲内存容量,则表示终端设备内存不足以运行该APK插件,造成该情况很可能是由于设备中存在内存泄露的情况,导致部分空闲的内存被异常占用。在该情况下,终端设备则启动内存泄露修复流程,以释放足够的内存容量启动待加载APK插件。
在本实施例中,终端设备获取已占用内存对应的进程列表,该进程列表具体用于记录当前终端设备内正在占用内存的所有进程。终端设备处理获取占用内存的进程外,还记录各个进程的运行状态,根据各个进程的运行状态判定其是否为异常占用进程。
在S106中,释放所述运行状态为结束运行的进程所占用的内存。
在本实施例中,终端设备根据各个正在占用内存的进程的运行状态,判定该进程是否为异常进程。若某一进程的运行状态为正在运行或开始运行,则识别该进程为正常占用进程,确实需要利用内存执行对应的操作;但某一进程的运行状态为结束运行,则表示该进程已经完成对应的操作,且该进程已经被关闭,理应将其所占用的资源归还给终端设备,然而该类进程却存在于当前占用内存的进程列表中,并未正常释放所占用的内存资源,因此将识别运行状态为结束运行的进程为异常占用进程。
在本实施例中,终端设备在确定了进程列表中包含的异常占用进程后,将根据各个异常占用进程所占用的内存的地址,并根据上述内存地址定位被异常占用的内存,将异常占用的内存的占用状态调整为空闲,并删除存储与该内存中的数据。
在本实施例中,终端设备在对执行内存释放操作后,将返回S105的操作,确定当前的内存容量是否足够加载APK插件,若判断结果为是,则执行S107的相关操作;反之,判断结果为否,则继续执行S105以及S106的相关操作。
在107中,通过所述主线程加载所述待加载APK插件。
在本实施例中,终端设备确定具备足够的内存容量以及待加载APK插件已下载于本地存储单元后,则通过主线程加载该待加载APK插件,完成用户发起的加载操作。
以上可以看出,本发明实施例提供的一种APK插件的加载方法通过在用户发起的页面加载请求后,在生成对应的页面的同时,还进行APK插件的预加载操作,该预加载操作具体为:终端设备首先确定该页面中包含的待加载APK插件,并在主线程中查询空闲的子线程对待加载APK插件进行异步下载操作,并存储于本地的存储单元内,以便用户发起APK插件加载请求时能够即时从缓存中提取出对应的APK插件。终端设备若接收到用户需要加载对应的APK插件,则从首先确定当前的内存容量,是否具备足够的空间加载该APK插件,若不具备足够的空间加载该APK插件,则有可能是内存存在内存泄漏的情况,因此将对该异常情况进行处理,确定当前被占用的内存所对应的进程,生成进程列表,并获取各个进程对应的运行状态,若存在运行状态为结束运行的进程但仍占用内存的情况,则表明该进程在结束后并未归还申请的硬件资源,将其识别为异常占用进程,继而终端设备将释放上述异常占用进程所占用的内存,以使有足够的内存空间加载该APK插件。与现有的APK插件的加载技术相比,本发明实施例在用户生成页面的时候,则通过主线程外的其他子线程进行异步APK插件的下载操作,从而在用户浏览完页面后,需要调用APK插件时,直接从本地进行提取加载,减少了用户所需等待的时间。另一方面,由于该APK插件的下载操作并非通过主线程进行同步执行,而是通过子线程进行异步执行,因此主线程并不会因为APK加载时间过程而判定ANR,导致加载失败需要重新加载,也提高了APK的加载效率。
图2示出了本发明第二实施例提供的一种APK插件的加载方法的具体实现流程图。参见图2所示,相对于图1所述实施例,本实施例提供的一种APK插件的加载方法中在所述释放所述运行状态为结束运行的进程所占用的内存之后,还包括S201以及S203,具体详述如下:
进一步地,在所述释放所述运行状态为结束运行的进程所占用的内存的步骤之后,还包括
在S201中,若监测到执行所述释放所述运行状态为结束运行的进程所占用的内存的步骤,则获取所述运行状态为结束运行的进程占用的内存容量。
在本实施例中,若监测到终端设备执行释放所述运行状态为结束运行的进程所占用的内存的步骤,则表示当前时刻终端设备发生了一次内存泄露的情况,因此需要对该内存泄露情况进行记录。
在本实施例中,终端设备在进行释放操作后,将统计该次释放操作中释放的内存容量,即为运行状态为结束的进程所占用的内存容量,以便根据该异常占用的内存容量,确定本次内存泄露的异常情况。
可选地,在本实施例中,终端设备间将根据该内存容量,确定其内存泄露的异常等级。具体地,终端设备根据该次获取的内存容量与设备的总内存容量的比值,确定本次内存泄露的异常等级,并将该异常等级写入S202中生成的内存泄露记录中。
在S202中,基于所述运行状态为结束运行的进程以及所述内存容量生成内存泄露记录。
在本实施例中,终端设备将根据本次检测到内存占用状态异常的进程,即运行状态为结束但仍占用设备内存的进程以及与之对应的内存容量,生成一条内存泄露记录。若本次检测过程中,发现存在多于一个异常占用进程,终端设备将为每个异常占用进程生成一条独立的内存泄露记录。
在本实施例中,该内存泄露记录中包含该异常占用进程的进程标识以及其对应的异常占用的内存容量,可选地,还包含发生内存泄露时对应的时间信息以及设备的其他硬件参数信息,如处理器的占用率、设备内部温度等,以便用户可根据该内存泄露记录定位发生异常的成因。
可选地,在本实施例中,终端设备在检测到某一内存泄露记录对应的异常等级大于预设阈值,则向用户发送异常预警信息,以便用户对该异常情况进行处理。
在S203中,将所述内存泄露记录添加至内存异常日志,以使用户可根据所述内存异常日志确定设备发生的内存泄露事件。
在本实施例中,终端设备每一次生成一条内存泄露记录,将会把该内存泄露记录添加到内存异常日志中,即该内存异常日志用于记录该终端设备每次发生内存泄露的情况,从而用户可通过该内存异常日志确定设备发生的内存泄露事件,继而对各个发生过异常的进程进行调整。
在本发明实施例中,通过记录设备中发生的内存泄露记录,并整合到同一个内存异常日志中,方便用户获知设备在运行过程中发生的异常情况,并根据该内存异常日志统一对各个异常进程进行修复,提高了异常修复的效率。
图3了本发明第三实施例提供的一种APK插件的加载方法S102的具体实现流程图。参见图3所示,相对于图1所述实施例,本实施例提供的一种APK插件的加载方法中S102包括S301~S302,在所述S102之后还包括S303以及S304具体详述如下:
进一步地,所述确定所述页面中包含的待加载APK插件,包括:
在S301中,向服务器发送APK插件查询请求;所述APK插件查询请求中包含所述待加载APK插件的文件标识。
在本实施例中,终端设备将根据待加载APK插件的文件数据量的大小,确定是否需要通过子线程进行异步下载。因此,为了确定各个APK插件的文件数据量的大小,将生成一个APK插件查询请求,并将该查询请求发送至待加载APK插件的服务器,以便服务器将该插件的文件数据量返回给终端设备。
在本实施例中,APK插件查询请求中包含待加载APK插件的文件标识,服务器可根据该查询请求中包含的文件标识定位对应的插件文件,继而获取该插件文件的文件数据量,生成对应的查询结果,并返回给终端设备。
在S302中,根据所述服务器返回的查询结果确定各个待加载APK插件的文件数据量。
在本实施例中,终端设备在接收到服务器返回的查询结果后,将提取该查询结果中的文件标识以及文件数据量,继而关联该文件标识对应的待加载APK插件以及该文件数据量。特别地,若待加载APK插件包含多个,且各个待加载APK插件对应的服务器均不一致,则终端设备将接收多个服务器返回的查询结果,继而根据多个查询结果确定各个待加载APK插件的文件数据量。
在本实施例中,终端设备将根据各个待加载APK插件以及对应的文件数据量,生成一个文件数据量统计列表,用于记录待加载APK插件以及文件数据量的对应关系。终端设备将根据该统计列表,逐一对该列表中的各个记录进行数据量阈值判定的操作。
在本实施例中,若待加载APK插件的文件数据量小于或等于预设的数据量阈值,则表示该待加载APK插件并未大文件,因此执行S303的相关操作;反之,若待加载APK插件的文件数据量大于预设的数据量阈值,则表示该待加载APK插件包含的数据量较多,下载时间较长,因此执行S304的相关操作。
在S102之后,还包括:
在S303中,判断所述文件数据量是否大于预设的数据量阈值,。
在本实施例中,终端设备首先需要判断所述文件数据量是否大于预设的数据量阈值,若确定文件数据量大于预设的数据量阈值,则执行S304的相关操作;反之,若确定文件数据量小于或等于预设的数据量阈值,则表示该待加载APK插件的数据量不多,即便通过主线程下载也不会因下载时间超长而导致终端设备判定为ANR,而且主线程所包含的资源较多,例如带宽资源、运算处理资源等,特别对于小文件的下载,其下载效率将高于通过子线程下载,因此终端设备在判定APK插件的文件数据量小于或等于预设的数据量阈值时,可通过主线程直接下载APK插件并进行加载。
需要说明的是,终端设备若判定文件数据量小于或等于预设的数据量阈值,直接通过主线程将待加载APK插件下载到内存,并通过内存加载该APK插件。在下载之前还可以执行S105以及S106的相关操作,判定是否具有足够的内存来进行下载。
在S304中,若所述文件数据量大于预设的数据量阈值,则执行所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式的步骤。
在本实施例中,终端设备在判定该待加载APK插件的文件数据量大于预设的数据量阈值时,则表示该APK插件通过主线程下载可能会导致占用时间超长,而下载失败,因此将执行所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式的步骤,即跳转至S103的步骤。
在本发明实施例中,通过识别各个待加载APK插件的文件数据量,选择对应的加载方式进行加载,从而对于数据量较小的APK插件,直接通过主线程进行下载,提高了终端设备对于插件的加载效率。
图4了本发明第四实施例提供的一种APK插件的加载方法S103的具体实现流程图。参见图4所示,相对于图1至图3所述实施例,本实施例提供的一种APK插件的加载方法中所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件包括:S401~S405,具体详述如下:
进一步地,所述选取主线程中运行状态为空闲的子线程作为插件加载线程,包括:
在S401中,若所述主线程中不存在空闲的子线程,则判定当前的所述子线程的个数是否小于预设的最大线程阈值。
在本实施例中,终端设备在需要通过子线程下载APK插件时,需要从主线程中选取空闲的子线程作为插件加载线程,若终端设备中判定该主线程中不含包含空闲的子线程,将执行S401的相关操作。
在本实施例中,终端设备若判定当前的主线程中不存在空闲的子线程,首先将获取当前已生成的子线程的个数,并将该子线程的个数与预设的最大线程阈值进行比较,确定终端设备能否创建新的子线程。若当前的子线程的个数小于最大线程阈值,则执行S402的相关操作;反之,若当前的子线程的个数大于或等于最大线程阈值,则执行S403的相关操作。
在S402中,若所述个数小于所述最大线程阈值,则创建一条子线程,并将创建的所述子线程作为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式。
在本实施例中,终端设备判定当前的子线程的个数小于最大线程阈值,则表示该终端设备并未到达线程上限,主线程仍可分配一定的资源生产子线程,因此将创建一条子线程,并将该创建得到的子线程作为插件加载线程。
在本实施例中,终端设备在创建一条子线程后,将为该子线程配置对应的线程标识以及端口号,以便根据该新分配的端口号与待加载APK插件的服务器进行通信,获取待加载APK插件的文件数据。
在S403中,若所述个数大于或等于最大线程阈值,则从占用的子线程中选取优先级最低的子线程作为临时占用线程。
在本实施例中,终端设备若判定当前的子线程的个数大于或等于最大线程阈值,则终端设备当前的线程数已达到线程上限,无法再从主线程中创建新的线程,在该情况下,终端设备将需要关闭已占用的子线程,来对待加载APK插件进行下载。
在本实施例中,每个进程根据其运行内容的重要程度分配又对应的优先级,例如直接应用终端设备运行的线程,其优先度较高,例如传输通信模块下载的数据的进程,其直接影响用户的操作以及设备的运算处理,其对应的优先级较高;而对于拍照待机进程,若用户在浏览页面的过程中,一般不会运用到拍照程序,因此保持拍照模块处于待机状态的进程其优先度较低,以此类推。终端设备设置优先级的判定规则可根据用户正在使用的使用的应用的不同而进行相应的调整。
在本实施例中,终端设备获取各个子线程所运行的进程情况,并得到占用进程列表,继而从该占用进程列表中选取优先级最低的一个进程所占用的线程作为临时占用线程,以便通过该临时占用线程进行APK插件的下载操作。
在S404中,暂停运行所述临时占用线程对应的进程,并存储所述临时占用线程的运行数据。
在本实施例中,终端设备将暂停运行该临时占用线程对应的进程,并存储该临时占用线程的运作数据,可选地,终端设备还保存该临时占用线程对应的运行环境参数。其中,该运行环境参数包括:线程当前已生成的处理结果、已提取得到的数据以及线程中相关参数的取值等。
在S405中,将所述临时占用线程识别为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式。
在本实施例中,终端设备在保存了临时占用线程的运行数据后,将通过该临时占用线程进行APK插件的下载操作。终端设备将该临时占用线程设置为插件加载线程,并将待加载APK插件的下载进程导入到该线程中进行运行,并将其运行模式调整为异步运行模式,若该线程本身的运行模式已经为异步运行模式,则无需进行调整设置。
在本发明实施例中,通过判断当前是否的子线程是否到达线程上限,继而根据判定结果执行对应的下载操作,从而提高了脚本加载方法的适用范围,即便已启动的线程已到达上限且无空闲线程,仍能进行预加载操作。
图5示出了本发明第五实施例提供的一种APK插件的加载方法的具体实现流程图。参见图5所示,相对于图4所示实施例,本实施例提供的一种APK插件的加载方法中在所述通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件之后,还包括S501以及S502,详述如下:
进一步地,在所述通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件之后,还包括:
在S501中,将所述插件加载进程的运行模式还原至所述临时占用线程对应的运行模式。
在本实施例中,终端设备在通过临时占用线程进行下载操作后,需要重新启动暂停的进程,因此,首先需要将插件加载进程的运行模式还原至临时占用线程时所对应的运行模式。例如,临时占用线程运行暂停的进程为同步运行模式,但在下载待加载APK插件时,为异步运行模式,在该情况下,需要将该子线程的运行模式从异步运行模式调整为同步运行模式,以匹配已暂停线程的运行。
在S502中,基于所述运行数据通过所述临时占用线程重新响应暂停的所述进程。
在本实施例中,终端设备将被暂停的进程重新加载到该临时占用线程中,并根据存储的运行数据,还原暂停时刻对应的运行环境,并重新启动该进程,以使该进程继续执行响应的操作。
在本发明实施例中,终端设备在占用了其他进程的子线程完成预加载操作后,通过保存的运行数据还原当时暂停时刻对应的运行环境,从而重新启动该进程,可在原有的处理结果的基础上继续执行该进程,避免重复执行已完成的操作。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图6示出了本发明一实施例提供的一种APK插件的加载终端的结构框图,该APK插件的加载终端包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
参见图6,所述APK插件的加载终端包括:
页面加载请求接收单元61,用于接收页面加载请求,并生成所述页面加载请求对应的页面;
APK插件确定单元62,用于确定所述页面中包含的待加载APK插件;
APK插件预加载单元63,用于选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
内存容量确定单元64,用于若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
进程运行状态确定单元65,用于若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
内存释放单元66,用于释放所述运行状态为结束运行的进程所占用的内存;
APK插件加载单元67,用于通过所述主线程加载所述待加载APK插件。
APK插件的加载终端,还包括:
内存容量获取单元,用于若监测到执行所述释放所述运行状态为结束运行的进程所占用的内存的步骤,则获取所述运行状态为结束运行的进程占用的内存容量;
内存泄露记录生成单元,用于基于所述运行状态为结束运行的进程以及所述内存容量生成内存泄露记录;
内存异常日志添加单元,用于将所述内存泄露记录添加至内存异常日志,以使用户可根据所述内存异常日志确定设备发生的内存泄露事件。
APK插件确定单元62,包括:
查询请求发送单元,用于向服务器发送APK插件查询请求;所述APK插件查询请求中包含所述待加载APK插件的文件标识;
文件数据量确定单元,用于根据所述服务器返回的查询结果确定各个待加载APK插件的文件数据量;
所述APK插件的加载终端还包括:
数据量判定单元,用于判断所述文件数据量是否大于预设的数据量阈值;
子线程加载单元,用于若所述文件数据量大于预设的数据量阈值,则执行所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式的步骤
APK插件预加载单元63,包括:
最大线程判定单元,用于若所述主线程中不存在空闲的子线程,则判定当前的所述子线程的个数是否小于预设的最大线程阈值;
子线程创建单元,用于若所述个数小于所述最大线程阈值,则创建一条子线程,并将创建的所述子线程作为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式;
临时占用线程选取单元,用于若所述个数大于或等于最大线程阈值,则从占用的子线程中选取优先级最低的子线程作为临时占用线程;
进程暂停单元,用于暂停运行所述临时占用线程对应的进程,并存储所述临时占用线程的运行数据;
临时占用线程调整单元,用于将所述临时占用线程识别为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式。
APK插件的加载终端,还包括:
运行模式还原单元,用于将所述插件加载进程的运行模式还原至所述临时占用线程对应的运行模式;
运行数据导入单元,用于基于所述运行数据通过所述临时占用线程重新响应暂停的所述进程。
因此,本发明实施例提供的APK插件的加载终端同样可以通过在用户发起的页面加载请求后,在生成对应的页面的同时,还进行APK插件的预加载操作,该预加载操作具体为:终端设备首先确定该页面中包含的待加载APK插件,并在主线程中查询空闲的子线程对待加载APK插件进行异步下载操作,并存储于本地的存储单元内,以便用户发起APK插件加载请求时能够即时从缓存中提取出对应的APK插件。终端设备若接收到用户需要加载对应的APK插件,则从首先确定当前的内存容量,是否具备足够的空间加载该APK插件,若不具备足够的空间加载该APK插件,则有可能是内存存在内存泄漏的情况,因此将对该异常情况进行处理,确定当前被占用的内存所对应的进程,生成进程列表,并获取各个进程对应的运行状态,若存在运行状态为结束运行的进程但仍占用内存的情况,则表明该进程在结束后并未归还申请的硬件资源,将其识别为异常占用进程,继而终端设备将释放上述异常占用进程所占用的内存,以使有足够的内存空间加载该APK插件。与现有的APK插件的加载技术相比,本发明实施例在用户生成页面的时候,则通过主线程外的其他子线程进行异步APK插件的下载操作,从而在用户浏览完页面后,需要调用APK插件时,直接从本地进行提取加载,减少了用户所需等待的时间。另一方面,由于该APK插件的下载操作并非通过主线程进行同步执行,而是通过子线程进行异步执行,因此主线程并不会因为APK加载时间过程而判定ANR,导致加载失败需要重新加载,也提高了APK的加载效率。
图7是本发明另一实施例提供的一种终端设备的示意图。如图7所示,该实施例的终端设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72,例如APK插件的加载程序。所述处理器70执行所述计算机程序72时实现上述各个APK插件的加载方法实施例中的步骤,例如图1所示的S101至S107。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各单元的功能,例如图6所示模块61至67功能。
示例性的,所述计算机程序72可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述终端设备7中的执行过程。例如,所述计算机程序72可以被分割成页面加载请求接收单元、APK插件确定单元、APK插件预加载单元、内存容量确定单元、进程运行状态确定单元、内存释放单元以及APK插件加载单元,各单元具体功能如下:
页面加载请求接收单元,用于接收页面加载请求,并生成所述页面加载请求对应的页面;
APK插件确定单元,用于确定所述页面中包含的待加载APK插件;
APK插件预加载单元,用于选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
内存容量确定单元,用于若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
进程运行状态确定单元,用于若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
内存释放单元,用于释放所述运行状态为结束运行的进程所占用的内存;
APK插件加载单元,用于通过所述主线程加载所述待加载APK插件。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种APK插件的加载方法,其特征在于,包括:
接收页面加载请求,并生成所述页面加载请求对应的页面;
确定所述页面中包含的待加载APK插件;
选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
释放所述运行状态为结束运行的进程所占用的内存;
通过所述主线程加载所述待加载APK插件。
2.根据权利要求1所述的加载方法,其特征在于,在所述释放所述运行状态为结束运行的进程所占用的内存之后,还包括:
若监测到执行所述释放所述运行状态为结束运行的进程所占用的内存的步骤,则获取所述运行状态为结束运行的进程占用的内存容量;
基于所述运行状态为结束运行的进程以及所述内存容量生成内存泄露记录;
将所述内存泄露记录添加至内存异常日志,以使用户可根据所述内存异常日志确定设备发生的内存泄露事件。
3.根据权利要求1所述的加载方法,其特征在于,所述确定所述页面中包含的待加载APK插件,包括:
向服务器发送APK插件查询请求;所述APK插件查询请求中包含所述待加载APK插件的文件标识;
根据所述服务器返回的查询结果确定各个待加载APK插件的文件数据量;
在所述确定所述页面中包含的待加载APK插件之后,还包括:
判断所述文件数据量是否大于预设的数据量阈值;
若所述文件数据量大于预设的数据量阈值,则执行所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式的步骤。
4.根据权利要求1-3中任一项所述的加载方法,其特征在于,所述选取主线程中运行状态为空闲的子线程作为插件加载线程,包括:
若所述主线程中不存在空闲的子线程,则判定当前的所述子线程的个数是否小于预设的最大线程阈值;
若所述个数小于所述最大线程阈值,则创建一条子线程,并将创建的所述子线程作为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式;
若所述个数大于或等于最大线程阈值,则从占用的子线程中选取优先级最低的子线程作为临时占用线程;
暂停运行所述临时占用线程对应的进程,并存储所述临时占用线程的运行数据;
将所述临时占用线程识别为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式。
5.根据权利要求4所述的加载方法,其特征在于,在所述通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件之后,还包括:
将所述插件加载进程的运行模式还原至所述临时占用线程对应的运行模式;
基于所述运行数据通过所述临时占用线程重新响应暂停的所述进程。
6.一种终端设备,其特征在于,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
接收页面加载请求,并生成所述页面加载请求对应的页面;
确定所述页面中包含的待加载APK插件;
选取主线程中运行状态为空闲的子线程作为插件加载线程,并通过所述插件加载线程从所述待加载APK插件对应的服务器中,下载所述待加载APK插件;其中,所述插件加载线程的运行模式为异步运行模式;
若接收到所述待加载APK插件的调用请求,则获取当前时刻的空闲内存容量;
若所述待加载APK插件的文件数据量大于所述空闲内存容量,则获取已占用内存对应的进程列表以及所述进程列表中各个进程的运行状态;
释放所述运行状态为结束运行的进程所占用的内存;
通过所述主线程加载所述待加载APK插件。
7.根据权利要求6所述的终端设备,其特征在于,在所述释放所述运行状态为结束运行的进程所占用的内存之后,所述处理器执行所述计算机程序时还实现如下步骤:
若监测到执行所述释放所述运行状态为结束运行的进程所占用的内存的步骤,则获取所述运行状态为结束运行的进程占用的内存容量;
基于所述运行状态为结束运行的进程以及所述内存容量生成内存泄露记录;
将所述内存泄露记录添加至内存异常日志,以使用户可根据所述内存异常日志确定设备发生的内存泄露事件。
8.根据权利要求6所述的终端设备,其特征在于,所述确定所述页面中包含的待加载APK插件,包括:
向服务器发送APK插件查询请求;所述APK插件查询请求中包含所述待加载APK插件的文件标识;
根据所述服务器返回的查询结果确定各个待加载APK插件的文件数据量;
在所述确定所述页面中包含的待加载APK插件之后,还包括:
判断所述文件数据量是否大于预设的数据量阈值;
若所述文件数据量大于预设的数据量阈值,则执行所述选取主线程中运行状态为空闲的子线程作为插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式的步骤。
9.根据权利要求6-8任一项所述的终端设备,其特征在于,所述选取主线程中运行状态为空闲的子线程作为插件加载线程,包括:
若所述主线程中不存在空闲的子线程,则判定当前的所述子线程的个数是否小于预设的最大线程阈值;
若所述个数小于所述最大线程阈值,则创建一条子线程,并将创建的所述子线程作为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式;
若所述个数大于或等于最大线程阈值,则从占用的子线程中选取优先级最低的子线程作为临时占用线程;
暂停运行所述临时占用线程对应的进程,并存储所述临时占用线程的运行数据;
将所述临时占用线程识别为所述插件加载线程,并将所述插件加载线程的运行模式设置为异步运行模式。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
CN201711022550.3A 2017-10-27 2017-10-27 一种apk插件的加载方法及其终端 Active CN107832100B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711022550.3A CN107832100B (zh) 2017-10-27 2017-10-27 一种apk插件的加载方法及其终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711022550.3A CN107832100B (zh) 2017-10-27 2017-10-27 一种apk插件的加载方法及其终端

Publications (2)

Publication Number Publication Date
CN107832100A true CN107832100A (zh) 2018-03-23
CN107832100B CN107832100B (zh) 2020-12-04

Family

ID=61649784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711022550.3A Active CN107832100B (zh) 2017-10-27 2017-10-27 一种apk插件的加载方法及其终端

Country Status (1)

Country Link
CN (1) CN107832100B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108303688A (zh) * 2018-04-27 2018-07-20 北京东远润兴科技有限公司 雷达信号处理的重构系统、方法和雷达系统
CN108595203A (zh) * 2018-04-28 2018-09-28 努比亚技术有限公司 应用功能执行方法、移动终端和计算机可读存储介质
CN110058897A (zh) * 2019-03-15 2019-07-26 平安普惠企业管理有限公司 页面操作控制方法、装置、计算机设备及存储介质
CN110209548A (zh) * 2018-04-19 2019-09-06 深圳市腾讯计算机系统有限公司 服务控制方法、系统、电子设备及计算机可读存储介质
CN110515672A (zh) * 2018-05-21 2019-11-29 阿里巴巴集团控股有限公司 业务数据加载方法、装置以及电子设备
CN110888690A (zh) * 2019-12-12 2020-03-17 北京爱奇艺科技有限公司 一种应用启动方法、装置、电子设备及存储介质
CN110941459A (zh) * 2019-11-20 2020-03-31 东软集团股份有限公司 调用Replugin插件的方法及装置
CN111352710A (zh) * 2018-12-24 2020-06-30 北京奇虎科技有限公司 进程管理方法及装置、计算设备、存储介质
CN112181544A (zh) * 2020-11-27 2021-01-05 深圳开源互联网安全技术有限公司 Java应用的运行方法、系统、装置及计算机可读存储介质
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN112363841A (zh) * 2020-11-27 2021-02-12 Oppo(重庆)智能科技有限公司 应用进程的查杀方法、装置、电子设备及存储介质
CN112689199A (zh) * 2020-12-23 2021-04-20 深圳市酷开网络科技股份有限公司 一种电视主页的插件加载方法、装置、电视及存储介质
CN114327675A (zh) * 2021-12-23 2022-04-12 广东明创软件科技有限公司 小游戏应用的启动方法及相关装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184006A1 (en) * 2007-01-29 2008-07-31 Min-Soo Moon Method and System for Preloading Page Using Control Flow
WO2013028019A2 (en) * 2011-08-23 2013-02-28 Samsung Electronics Co., Ltd. Mobile terminal and operation method for the same based on memory state changes
CN102982169A (zh) * 2012-12-12 2013-03-20 北京奇虎科技有限公司 用于隔离网页插件的浏览器和方法
CN103617165A (zh) * 2013-10-22 2014-03-05 小米科技有限责任公司 一种加载图片的方法、装置及终端
CN104572277A (zh) * 2014-12-17 2015-04-29 大唐移动通信设备有限公司 一种线程流控方法和装置
US20150186542A1 (en) * 2013-12-30 2015-07-02 Samsung Electronics Co., Ltd. Method and system for rendering a web page free of inappropriate urls
CN105739984A (zh) * 2016-01-29 2016-07-06 中国人民解放军63811部队 一种基于Qt的高可维护性数据显示框架
CN106484755A (zh) * 2016-07-29 2017-03-08 深圳市美贝壳科技有限公司 异步快速加载视频缩略图的方法
CN106681933A (zh) * 2016-11-16 2017-05-17 深圳市金立通信设备有限公司 一种内存管理方法及终端

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184006A1 (en) * 2007-01-29 2008-07-31 Min-Soo Moon Method and System for Preloading Page Using Control Flow
WO2013028019A2 (en) * 2011-08-23 2013-02-28 Samsung Electronics Co., Ltd. Mobile terminal and operation method for the same based on memory state changes
CN102982169A (zh) * 2012-12-12 2013-03-20 北京奇虎科技有限公司 用于隔离网页插件的浏览器和方法
CN103617165A (zh) * 2013-10-22 2014-03-05 小米科技有限责任公司 一种加载图片的方法、装置及终端
US20150186542A1 (en) * 2013-12-30 2015-07-02 Samsung Electronics Co., Ltd. Method and system for rendering a web page free of inappropriate urls
CN104572277A (zh) * 2014-12-17 2015-04-29 大唐移动通信设备有限公司 一种线程流控方法和装置
CN105739984A (zh) * 2016-01-29 2016-07-06 中国人民解放军63811部队 一种基于Qt的高可维护性数据显示框架
CN106484755A (zh) * 2016-07-29 2017-03-08 深圳市美贝壳科技有限公司 异步快速加载视频缩略图的方法
CN106681933A (zh) * 2016-11-16 2017-05-17 深圳市金立通信设备有限公司 一种内存管理方法及终端

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209548A (zh) * 2018-04-19 2019-09-06 深圳市腾讯计算机系统有限公司 服务控制方法、系统、电子设备及计算机可读存储介质
CN108303688A (zh) * 2018-04-27 2018-07-20 北京东远润兴科技有限公司 雷达信号处理的重构系统、方法和雷达系统
CN108595203A (zh) * 2018-04-28 2018-09-28 努比亚技术有限公司 应用功能执行方法、移动终端和计算机可读存储介质
CN108595203B (zh) * 2018-04-28 2024-04-19 努比亚技术有限公司 应用功能执行方法、移动终端和计算机可读存储介质
CN110515672A (zh) * 2018-05-21 2019-11-29 阿里巴巴集团控股有限公司 业务数据加载方法、装置以及电子设备
CN111352710A (zh) * 2018-12-24 2020-06-30 北京奇虎科技有限公司 进程管理方法及装置、计算设备、存储介质
CN111352710B (zh) * 2018-12-24 2024-02-06 三六零科技集团有限公司 进程管理方法及装置、计算设备、存储介质
CN110058897A (zh) * 2019-03-15 2019-07-26 平安普惠企业管理有限公司 页面操作控制方法、装置、计算机设备及存储介质
CN110941459A (zh) * 2019-11-20 2020-03-31 东软集团股份有限公司 调用Replugin插件的方法及装置
CN110888690A (zh) * 2019-12-12 2020-03-17 北京爱奇艺科技有限公司 一种应用启动方法、装置、电子设备及存储介质
CN112257135B (zh) * 2020-10-30 2023-09-05 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN112181544A (zh) * 2020-11-27 2021-01-05 深圳开源互联网安全技术有限公司 Java应用的运行方法、系统、装置及计算机可读存储介质
CN112363841A (zh) * 2020-11-27 2021-02-12 Oppo(重庆)智能科技有限公司 应用进程的查杀方法、装置、电子设备及存储介质
CN112689199B (zh) * 2020-12-23 2023-08-29 深圳市酷开网络科技股份有限公司 一种电视主页的插件加载方法、装置、电视及存储介质
CN112689199A (zh) * 2020-12-23 2021-04-20 深圳市酷开网络科技股份有限公司 一种电视主页的插件加载方法、装置、电视及存储介质
CN114327675A (zh) * 2021-12-23 2022-04-12 广东明创软件科技有限公司 小游戏应用的启动方法及相关装置

Also Published As

Publication number Publication date
CN107832100B (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN107832100A (zh) 一种apk插件的加载方法及其终端
CN106201661B (zh) 用于弹性伸缩虚拟机集群的方法和装置
CN108376079B (zh) 自动应用更新
CN113055451B (zh) 资源下载方法、装置、电子设备及存储介质
CN110968331B (zh) 应用程序运行的方法和装置
CN106528210A (zh) 一种应用程序的运行方法及装置
CN107957837B (zh) 网页应用程序的快捷方式生成方法、装置和终端设备
CN108540509B (zh) 一种终端浏览器的处理方法、装置及服务器、智能终端
CN110069739B (zh) 页面预加载方法及装置
CN110113391B (zh) 一种客户端上线方法、装置及一种客户端运行方法、装置
CN109343908B (zh) 一种延迟加载js脚本的方法和装置
CN114090623A (zh) 一种缓存资源的创建方法、装置、电子设备及存储介质
CN109901849B (zh) 应用程序安装方法、装置、电子设备及存储介质
CN110020290B (zh) 网页资源缓存方法、装置、存储介质及电子装置
EP3748493B1 (en) Method and device for downloading installation-free application
CN113721936B (zh) 一种应用管理方法及智能终端、装置及存储介质
CN109815202B (zh) 日志编辑方法及相关装置
CN115470427A (zh) 页面加载方法、装置、设备以及存储介质
CN109032795A (zh) 数据缓存的处理方法及装置、存储介质、电子装置
CN114756362A (zh) 资源配额管理方法及系统、智能终端、存储介质
CN111666020B (zh) 一种文档页面切换的方法、装置、电子设备及存储介质
CN113849195A (zh) 应用程序加载方法、装置、存储介质以及终端
CN104125253B (zh) 网络应用的实现方法和系统
RU2595763C2 (ru) Способ и устройство менеджмента загрузки на базе браузера android
CN115004667A (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
GR01 Patent grant
GR01 Patent grant