一种应用程序闪退处理方法、智能终端及存储介质与流程

文档序号:21407615发布日期:2020-07-07 14:41阅读:253来源:国知局
一种应用程序闪退处理方法、智能终端及存储介质与流程

本发明涉及应用程序进程优化技术领域,具体涉及一种应用程序闪退处理方法、智能终端及存储介质。



背景技术:

在android智能电视等移动终端上安装有多个应用程序,但是不同的移动终端内使用的芯片具有不同的运行内存和cpu占比,所以每个应用程序运行过程中占用的内存是有限的,不同的移动终端对不同进程等级的应用程序做了内存占用的限制。

现有技术中android系统即使用户在界面上关掉一个应用,切换到别的应用,为了下次启动应用能够更加快速,被关掉的应用进程依然会存在于内存之中,随着系统运行时间的增长,内存中的进程也会越来越多,当应用程序的cpu占比超过系统承载能力时,系统运行能力下降,会对不同等级进程的应用程序进行内存回收,当应用程序的等级较低且该应用程序的cup占比过高或占用运行内存过大时很容易被系统回收,从而导致应用程序闪退,给用户的使用带来了不便。

因此,现有技术还有待于改进和发展。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种应用程序闪退处理方法、智能终端及存储介质,旨在解决现有技术中当应用程序的cpu占比超过系统承载能力时,不能合理进行内存回收,导致cup占比过高或占用运行内存过大的后台服务应用程序内存被系统回收,应用程序闪退等问题。

本发明解决技术问题所采用的技术方案如下:

一种应用程序闪退处理方法,其中,所述方法包括:

当监测到应用程序出现闪退时,查看log文件,根据闪退关键标志确定出应用程序的闪退时间点,并记录应用程序闪退时的oom_score_adj;

利用性能分析器对确定出的应用程序进行分析,并降低所述应用程序中会导致系统cpuidle占比低于阈值的应用程序的对象创建频率;

若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整。

所述的应用程序闪退处理方法,其中,所述若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整的步骤之后,还包括:

若闪退现象还存在,则需要对出厂设置时的系统的低内存阈值进行优化调整。

所述的应用程序闪退处理方法,其中,所述当监测到应用程序出现闪退时,查看log文件,根据闪退关键标志确定出应用程序的闪退时间点,并记录应用闪退时的oom_score_adj的步骤之前,还包括:

预先设置一用于监测是否存在应用程序出现闪退的监听程序,所述监听程序每隔预设的时间间隔对正在运行的应用程序进行监测。

所述的应用程序闪退处理方法,其中,所述当监测到应用程序出现闪退时,查看log文件,根据闪退关键标志确定出应用程序的闪退时间点,并记录应用程序闪退时的oom_score_adj的步骤,包括:

当监测到应用程序出现闪退时,查看系统的log文件;

从所述log文件中获取闪退关键标志,并根据所述闪退关键标志确认应用程序的闪退时间点;

记录应用程序闪退时的oom_score_adj。

所述的应用程序闪退处理方法,其中,所述log文件中包含的闪退关键标志的内容为:windeath:window。

所述的应用程序闪退处理方法,其中,所述利用性能分析器对确定出的应用程序进行分析,并降低所述应用程序中会导致系统cpuidle占比低于阈值的应用程序的对象创建频率的步骤,包括:

当确定出闪退的应用程序之后,利用androidstudio的androidprofile工具对应用程序的运行内存进行分析,

在终端通过top命令依次查看当运行所述应用程序时,系统的cpu占用情况,并判断所述应用程序运行时是否会导致系统cpuidle占比低于预设的阈值;

若是时,则控制所述应用程序降低对象创建频率及调用中间件频率以降低cpu占用率。

所述的应用程序闪退处理方法,其中,所述若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整的步骤,包括:

若闪退现象还存在,则查看kernellog文件,找到lowmemorykiller的log文件;

从所述lowmemorykiller的log文件查找到仍存在闪退现象的应用程序的当前oom_score_adj值,并将仍存在闪退现象的应用程序的当前oom_score_adj值与出厂内置的同类型应用的oom_score_adj值进行对比,判断lowmemorykiller的低内存阈值是否设置合理;

若合理,则提高仍存在闪退现象的应用程序的进程优先级。

所述的应用程序闪退处理方法,其中,所述提高仍存在闪退现象的应用程序的进程优先级的步骤,包括:

若仍存在闪退现象的应用程序是系统内置应用,则在该应用程序配置文件中加入android:persistent=true,以提高进程优先级;

若仍存在闪退现象的应用程序不是系统内置应用,则在该应用程序启动后的5s内调用该应用程序的startforeground()函数,启动一个前台服务,以提高应用优先级。

一种存储介质,其上存储有多条指令,其中,所述指令适于由处理器加载并执行,以执行实现上述任一项应用程序闪退处理方法的步骤。

一种智能终端,其中,包括:处理器、与处理器通信连接的存储介质,所述存储介质适于存储多条指令;所述处理器适于调用所述存储介质中的指令,以执行实现上述任一项所述的应用程序闪退处理方法的步骤。

本发明的有益效果:本发明通过降低出现闪退的应用程序中会导致系统cupidle占比低于阈值的功能的对象创建频率,并对其进程优先级进行调整,解决现有技术中当应用程序的cpu占比超过系统承载能力时,导致cup占比过高或占用运行内存过大的后台服务应用程序内存被系统回收导致应用程序闪退的问题,给用户带来方便。

附图说明

图1是本发明的应用程序闪退处理方法的较佳实施例的流程图。

图2是本发明的应用程序闪退处理方法的具体应用实施例的流程图。

图3是本发明的智能终端的功能原理图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其系统应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供的应用程序闪退处理方法,可以系统应用于终端中。其中,终端可以但不限于是各种个人计算机、笔记本电脑、手机、平板电脑、车载电脑和便携式可穿戴设备。本发明的终端采用多核处理器。其中,终端的处理器可以为中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)、视频处理单元(videoprocessingunit,vpu)等中的至少一种。

本发明提供一种应用程序闪退处理方法,具体如图1所示,所述方法包括:

步骤s100、当监测到应用程序出现闪退时,查看log文件,根据闪退关键标志确定出应用程序的闪退时间点,并记录应用程序闪退时的oom_score_adj。

目前的移动终端上虽然可以同时运行多个应用程序,但是由于不同的移动终端内使用的芯片具有不同的运行内存和cpu占比,所以每个应用程序运行过程中占用的内存也是有限的。当用户在界面上关掉一个应用,切换到别的应用,被关掉的应用进程依然会存在于内存之中,随着系统运行时间的增长,内存中的进程也会越来越多,当应用程序的cpu占比超过系统承载能力时,会对系统中等级较低且cup占比过高或占用运行内存过大的应用程序进行内存回收,从而导致应用程序闪退,给开发者带来极大的困扰。因此,为了解决该问题,本实施例中当监听到应用程序出现闪退时,通过查找闪退时间点的log文件,并根据所述log文件确定出闪退的应用程序,以便后续步骤中对确定的闪退应用程序降低其应用程序中会导致系统cupidle占比低于阈值的功能的对象创建频率,并对其进程优先级进行调整,从而为后台服务应用程序的长久运行提供保障。

具体地,本实施例中会在移动终端中预先设置一用于监测是否存在应用程序出现闪退的监听程序,当监听到应用程序出现闪退时,则通过查找闪退时间点的log文件,并从log文件中获取闪退关键标志,从而根据闪退关键标志确定出闪退的应用程序以及闪退时间点,并进行后续步骤;否则,继续进行监听。优选地,本实施例中可以自主设置每隔预设的时间间隔自动开启监听程序进行监听,也可以设置监听程序长时间开启。

进一步地,当监听到应用程序出现闪退时,系统会自动查找系统中的log文件,即系统的运行日志,系统的log文件里面记录有系统在运行的过程中出现的异常,如程序异常退出,程序强制关闭,程序无响应等,通过系统的log文件,能够获取到应用程序闪退时间点的log文件,并基于所述log文件定位出闪退的应用程序,并获取闪退关键标志,进而确认出闪退的时间点,并记录应用程序闪退时的oom_score_adj。优选地,本实施例中获取到的的log文件中的内容为:windeath:window,从所述log文件中可以获取到闪退应用程序的包名为闪退关键标志,从而确认发生闪退的应用程序。

进一步地,步骤s200、利用性能分析器对确定出的应用程序进行分析,并降低所述应用程序中会导致系统cpuidle占比低于阈值的应用程序的对象创建频率。

具体实施时,本实施例中当确定出闪退的应用程序之后,需要利用android系统中的集成开发工具androidstudio中的androidprofile工具对应用程序的运行内存进行分析。androidstudio是谷歌推出一个android集成开发工具,其提供了集成的android开发工具用于开发和调试,而androidprofile是androidstudio中的性能分析器,androidprofile分为三大模块:cpu、内存、网络,通过androidprofile能实时获取应用程序的cpu使用情况和线程活动,识别应用程序是否有内存泄漏和内存溢出,检查应用程序如何和何时传输数据等。优选地,本实施例中是通过androidprofile工具对发生闪退的应用程序运行时的内存和cpu占用情况进行分析。具体地当确定出闪退的应用程序后,点击androidstudio工具栏view中的toolwindows中的androidprofile,从androidprofile工具栏中选择要分析的应用程序,单击androidprofile中的cpu时间轴中的任意位置打开cpuprofiler,cpuprofiler会立即开始显示该应用程序的cpu使用情况和线程活动,然后通过androidprofile的内存分析器memoryprofile查看该应用程序的内存分配情况,通过androidprofile找到应用程序对象创建过多的代码以便后续降低应用程序的对象创建频率。

进一步地,本实施例中确定出闪退的应用程序之后,还通过top命令依次查看当运行所述应用程序时,系统的cpu占用情况。top命令是android系统中用于显示系统当前的进程和其它状况的命令,top命令是一个动态显示过程,通过用户按键来实时的对系统处理器的状态进行监视,可以显示当前进程的cpu占用率、cpu核心数以及cpuidle(系统忙闲程度)。cpuidle也称systemidle代表系统空闲值,cpuidle占用越低说明cpu占用越高,应用程序越容易被系统闪退。通过top命令依次查看当运行所述应用程序时,系统的cpu占用情况,并判断所述应用程序运行时是否会导致系统cpuidle占比低于预设的阈值,若是则说明该应用程序被系统闪退的风险较大,此时通过对之前找到的应用程序对象创建过多的代码进行修改,以减少应用程序对象创建频率,从而降低系统的cpu占比。此外,考虑到应用程序在运行过程中频繁的调用中间件也会占用系统的cpu,本实施例中当判断所述应用程序运行时会导致系统cpuidle占比低于预设的阈值之后,还通过控制所述应用程序降低调用中间件频率来进一步降低应用程序的cpu占用率,从而降低应用程序出现闪退的风险。

进一步地,步骤s300、若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整。

具体实施时,android系统中的kernel每隔预定时间会检查当前内存是否低于阀值,如果是,则停止oom_score_adj值最大的应用进程,如果有2个以上的应用进程oom_score_adj值相同,则停止其中cpu占用率最多的,android系统的kernellog文件中记载了系统关闭的应用程序的相关信息。因此本实施例中当降低应用程序的cpu占用率后,应用程序仍然存在闪退现象,则查看android系统的kernellog文件,通过kernellog文件找到android系统中的lowmemorykiller(低内存管理)的log文件,从所述lowmemorykiller的log文件中获取仍存在闪退现象的应用程序的当前oom_score_adj值,与出厂设置的oom_score_adj值进行对比,判断应用程序的oom_score_adj值是否处于合理水平;若不合理,则将仍存在闪退现象的应用程序的当前oom_score_adj值调整到合理范围;若合理,则提高仍存在闪退现象的应用程序的进程优先级。

具体地,若应用程序的当前oom_score_adj值设置在合理范围内仍存在闪退现象,则判断该应用程序是否为系统内置应用程序,若仍存在闪退现象的应用程序是系统内置应用,则在应用程序的该应用程序配置文件中加入android:persistent=true,应用程序被设置为persistent后,将很难被lowmemorykill,从而降低应用程序出现闪退的风险。若仍存在闪退现象的应用程序不是系统内置应用,则在该应用程序启动后的预定时间内调用该应用程序的startforeground()函数,启动一个前台服务,优选地,本实施例中的预定时间设定为5s。应用程序分为五个常用进程等级,包括前台进程、可见进程、服务进程、后台进程和空进程,越往后面应用程序的优先级越低,被系统闪退的概率越大。因此,本实施例中通过调用存在闪退的应用程序的startforeground()函数,将应用程序的服务进程设置在前台运行,能够提高应用程序的优先级,当系统内存不足时不容易出现闪退。

进一步地,步骤s300之后还包括,若闪退现象还存在,则需要对出厂设置时系统的低内存阈值进行优化调整。

具体实施时,当应用程序的当前oom_score_adj值设置在合理范围内,且应用程序的进程优先级被提高后,应用程序仍然存在闪退现象,则需要与移动终端所使用芯片的芯片厂家联系,判断系统出厂设置时的低内存阈值oom_score_adj是否设置合理,若不合理,则需要优化系统的低内存阈值,将其调整到合理的水位,从而解决应用程序闪退的问题。

为了更好地理解本发明的技术,本发明还提供一种具体的应用实施例,如图2中所示,具体包括如下步骤。

步骤201、查找应用程序闪退时系统的log文件,并根据log文件确定闪退时间点;

步骤202、通过androidstudio的androidprofile分析内存和cpu占用情况;

步骤203、通过top命令依次查看当运行所述应用程序时,系统的cpu占用情况;

步骤204、判断应用程序运行时是否会导致系统cpuidle占比低于预设的阈值,若是,则执行步骤205,若否,则执行步骤206;

步骤205、降低应用程序对象创建频率和中间件调用频率;

步骤206、查看kernellog文件,从lowmemorykiller的log文件找到应用程序的oom_score_adj值;

步骤207、将应用程序的oom_score_adj值设置到合理范围;

步骤208、判断应用程序是否为内置应用,若是,则执行步骤209,若否,则执行步骤210;

步骤209、在log文件中加入android:persistent=true;

步骤210、调用startforeground()函数,启动一个前台服务。

基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图3所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏和温度传感器。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序闪退处理方法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该智能终端的温度传感器是预先在智能终端内部设置,用于检测内部设备的当前运行温度。

本领域技术人员可以理解,图3中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所系统应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种智能终端,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时至少可以实现以下步骤:

当监测到应用程序出现闪退时,查看log文件,根据闪退关键标志确定出应用程序的闪退时间点,并记录应用程序闪退时的oom_score_adj;

利用性能分析器对确定出的应用程序进行分析,并降低所述应用程序中会导致系统cpuidle占比低于阈值的应用程序的对象创建频率;

若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:预先设置一用于监测是否存在应用程序出现闪退的监听程序,当监听到应用程序出现闪退时,则通过查找闪退时间点的log文件确定出闪退的应用程序以进行后续步骤,否则,继续进行监听。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:当监听到应用程序出现闪退时,当监测到应用程序出现闪退时,查看系统的log文件;从所述log文件中获取闪退关键标志,并根据所述闪退关键标志确认应用程序的闪退时间点;记录应用程序闪退时的oom_score_adj。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:利用android系统中的集成开发工具androidstudio中的androidprofile工具对存在闪退的应用程序的运行内存进行分析,通过androidprofile找到应用程序对象创建过多的代码;通过终端的top命令依次查看当运行所述应用程序时,系统的cpu占用情况,并判断所述应用程序运行时是否会导致系统cpuidle占比低于预设的阈值,若是则通过修改应用程序对象创建过多的代码来减少应用程序的创建频率,并减少应用程序调取中间件的频率,从而降低应用程序的cpu占用比。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:查看android系统的kernellog文件,通过kernellog文件找到android系统中的lowmemorykiller(低内存管理)的log文件,从所述lowmemorykiller的log文件中获取仍存在闪退现象的应用程序的当前oom_score_adj值,与出厂内置的类似应用的oom_score_adj值进行对比,判断应用程序的oom_score_adj值是否设置合理;若不合理,则将仍存在闪退现象的应用程序的当前oom_score_adj值调整到合理范围;若合理,则提高仍存在闪退现象的应用程序的进程优先级。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:判断该应用程序是否为系统内置应用程序,若仍存在闪退现象的应用程序是系统内置应用,则在应用程序的log文件中加入android:persistent=true,若否则在该应用程序启动后的预定时间内调用该应用程序的startforeground()函数,启动一个前台服务。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

综上所述,本发明提供了一种应用程序闪退处理方法、存储介质及智能终端,方法包括:当监测到应用程序出现闪退时,根据闪退关键标志确认出闪退时间点的应用程序,并记录应用闪退时的oom_score_adj;利用性能分析器分析运行中的应用程序,得到导致cpu占比过高的变量,并降低应用程序中会导致系统cpuidle占比过低的对象的创建频率;若闪退现象还存在,则查看内存管理机制,并对应用程序的进程优先级进行调整。本发明解决了现有技术中当应用程序的cpu占比超过系统承载能力时,导致cup占比过高或占用运行内存过大的后台服务类应用程序内存被系统回收导致应用程序闪退的问题。

应当理解的是,本发明的系统应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1