一种应用异常的处理方法及电子设备与流程

文档序号:30419755发布日期:2022-06-15 12:43阅读:161来源:国知局
一种应用异常的处理方法及电子设备与流程

1.本技术涉及电子技术领域,尤其涉及一种应用异常的处理方法及电子设备。


背景技术:

2.当前大部分应用包括出厂应用(例如相机等)及第三方应用,都会依赖软件开发工具包(software development kit,sdk)、软件包文件格式(java archive,jar)、c/c++库文件(library,lib)等,调用其中的应用程序接口(application programming interface,api)实现一些特定的功能。上述应用依赖sdk等的行为和质量不可控,例如在当前线程调用api接口时线程发生异常或者在当前进程新建子线程调用api接口时子线程发生异常未得到处理时,就可能导致进程被杀,应用发生崩溃闪退。
3.目前,用户在使用应用的过程中,经常会遇到应用崩溃闪退的问题,导致用户的体验较差。


技术实现要素:

4.本技术提供一种应用异常的处理方法及电子设备,用以解决现有技术中应用崩溃闪退的问题。
5.第一方面,本技术提供了一种应用异常的处理方法,该方法可以包括:在电子设备应用异常的情况下,电子设备确定应用异常为应用的隔离线程异常后,电子设备退出异常的隔离线程,保持应用的进程运行。
6.通过上述方法,当电子设备的应用异常是隔离线程异常导致的情况下,电子设备可以只退出异常的隔离线程,保证应用的进程继续运行,可以避免应用崩溃闪退,从而可以提高用户的体验。
7.在一个可能的设计中,隔离线程为针对应用的功能预设的线程。
8.在一个可能的设计中,电子设备确定应用异常为应用的隔离线程异常,具体方法可以为:电子设备确定应用的线程中异常的线程的标识与预设的隔离线程的标识相同。这样电子设备可以准确地确定应用异常为应用的隔离线程异常。
9.在一个可能的设计中,隔离线程用于调用sdk、jar或c/c++lib。
10.在一个可能的设计中,隔离线程用于实现应用的非核心功能的业务。这样在后续电子设备退出隔离线程,保持应用的进程继续运行时,可以减小应用的功能的影响。
11.在一个可能的设计中,电子设备退出异常的隔离线程,具体方法可以为:电子设备杀掉异常的隔离线程。这样电子设备可以成功退出异常的隔离线程,保持应用的进程继续运行。
12.第二方面,本技术还提供了一种应用异常的处理方法,该方法可以包括:在电子设备应用异常的情况下,电子设备确定应用异常为应用的子线程连续性故障后,电子设备退出异常的子线程,保持应用的进程运行;其中,子线程连续性故障指示一个子线程在预设时长内发生第n次相同的故障。
13.通过上述方法,在电子设备的应用异常的情况下,电子设备可以只退出异常的子线程,保证应用的进程继续运行,可以避免应用崩溃闪退,从而可以提高用户的体验。
14.在一个可能的设计中,电子设备确定应用异常为应用的子线程连续性故障,具体方法可以为:电子设备获取应用异常的当前故障特征信息;电子设备确定当前故障特征信息与第一故障特征信息相同,第一故障特征信息为当前应用异常之前的预设时长内,应用发生预设次数的异常时的故障特征信息。这样电子设备可以准确地确定应用异常为应用的子线程连续性故障,进而后续只退出异常的子线程,保持应用的进程继续运行。
15.在一个可能的设计中,电子设备保存当前故障特征信息。这样可以便于后续电子设备继续判断之后的应用异常是否为应用的子线程连续性故障。
16.在一个可能的设计中,当前故障特征信息可以为以下其中一项:进程名称、应用名称、应用用户名、应用版本号、线程名称、异常类型、异常信息或异常堆栈等。
17.在一个可能的设计中,电子设备退出异常的子线程,具体方法可以为:电子设备杀掉异常的子线程。这样电子设备可以成功退出异常的子线程,保持应用的进程继续运行。
18.在一个可能的设计中,n为大于或者等于3的整数。
19.第三方面,本技术还提供了一种应用异常的处理方法,该方法可以包括:在电子设备应用异常的情况下,电子设备判断应用异常是否为应用的隔离线程异常;当电子设备确定应用异常为应用的隔离线程异常时,电子设备退出异常的隔离线程,保持应用的进程运行;当电子设备确定应用异常不为应用的隔离线程异常时,电子设备确定应用异常为应用的子线程连续性故障时退出异常的子线程,保持应用的进程运行;其中,子线程连续性故障指示一个子线程在预设时长内发生第n次相同的故障。
20.通过上述方法,当电子设备的应用异常的情况下,电子设备可以只退出异常的线程,保证应用的进程继续运行,可以避免应用崩溃闪退,从而可以提高用户的体验。
21.在一个可能的设计中,隔离线程为针对应用的功能预设的线程。
22.在一个可能的设计中,电子设备判断应用异常是否为应用的隔离线程异常,具体方法可以为:电子设备判断应用的线程中异常的线程的标识与预设的隔离线程的标识是否相同;当电子设备确定应用的线程中异常的线程的标识与预设的隔离线程的标识相同时,电子设备确定应用异常为应用的隔离线程异常;当电子设备确定应用的线程中异常的线程的标识与预设的隔离线程的标识不相同时,电子设备确定应用异常不为应用的隔离线程异常。这样电子设备可以准确地确定应用异常是否为应用的隔离线程异常。
23.在一个可能的设计中,隔离线程用于调用sdk、jar或c/c++lib。
24.在一个可能的设计中,隔离线程用于实现应用的非核心功能的业务。这样在后续电子设备退出隔离线程,保持应用的进程继续运行时,可以减小应用的功能的影响。
25.在一个可能的设计中,电子设备退出异常的隔离线程,具体方法可以为:电子设备杀掉异常的隔离线程。这样电子设备可以成功退出异常的隔离线程,保持应用的进程继续运行。
26.在一个可能的设计中,电子设备确定应用异常为应用的子线程连续性故障,具体方法可以为:电子设备获取应用异常的当前故障特征信息;电子设备确定当前故障特征信息与第一故障特征信息相同,第一故障特征信息为当前应用异常之前的预设时长内,应用发生预设次数的异常时的故障特征信息。这样电子设备可以准确地确定应用异常为应用的
子线程连续性故障,进而后续只退出异常的子线程,保持应用的进程继续运行。
27.在一个可能的设计中,电子设备保存当前故障特征信息。这样可以便于后续电子设备继续判断之后的应用异常是否为应用的子线程连续性故障。
28.在一个可能的设计中,当前故障特征信息可以为以下其中一项:进程名称、应用名称、应用用户名、应用版本号、线程名称、异常类型、异常信息或异常堆栈。
29.在一个可能的设计中,电子设备退出异常的子线程,具体方法可以为:电子设备杀掉异常的子线程。这样电子设备可以成功退出异常的子线程,保持应用的进程继续运行。
30.在一个可能的设计中,n为大于或者等于3的整数。
31.第四方面,本技术还提供一种电子设备,该电子设备可以包括执行上述第一方面、第二方面或者第三方面的任意一种可能的设计的方法的模块或单元;这些模块或单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
32.第五方面,本技术还提供一种电子设备,该电子设备可以包括存储器和一个或多个处理器。其中,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;当计算机指令被处理器执行时,使得电子设备执行上述第一方面、第二方面或者第三方面的任意一种可能的设计的方法。
33.第六方面,本技术还提供一种计算机可读存储介质,可以包括程序指令,当程序指令在计算机上运行时,使得计算机执行上述第一方面、第二方面或者第三方面的任意一种可能的设计的方法。
34.第七方面,本技术还提供一种包括计算机程序代码或指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述第一方面、第二方面或者第三方面的任意一种可能的设计的方法。
35.第八方面,本技术还提供了一种芯片,包括处理器,处理器与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以使芯片实现上述第一方面、第二方面或者第三方面的任意一种可能的设计的方法。
36.上述第四方面至第八方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
37.图1为本技术提供的一种电子设备的结构示意图;
38.图2为本技术提供的一种电子设备的软件结构框图;
39.图3为现有技术中的一种应用异常的处理示意图;
40.图4为本技术提供的一种应用异常的处理示意图;
41.图5为本技术提供的一种应用运行的过程示意图;
42.图6为本技术提供的一种连续性故障示意图;
43.图7为本技术提供的一种应用异常的处理过程示意图;
44.图8为本技术提供的另一种应用异常的处理过程示意图;
45.图9为本技术提供的一种问询用户的界面示意图;
46.图10为本技术提供的一种电子设备的结构示意图;
47.图11为本技术提供的一种电子设备的结构图。
具体实施方式
48.下面将结合附图对本技术作进一步地详细描述。
49.本技术实施例提供一种应用异常的处理方法及电子设备,用以解决现有技术中应用崩溃闪退的问题。其中,本技术所述方法和装置(电子设备)基于同一技术构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
50.以下,对本技术中的部分用语进行解释说明,以便于本领域技术人员理解。
51.1)、本技术实施例涉及的应用(application,app),又可以称为应用程序,为能够实现某项或多项特定功能的软件程序。通常,电子设备中可以安装多个应用,例如,即时通信类应用、视频类应用、音频类应用、图像拍摄类应用等等。其中,即时通信类应用,例如可以包括(wechat)、whatsapp(line)、(instagram)、kakao等。图像拍摄类应用,例如可以包括相机应用(出厂设置系统相机或第三方相机应用)。视频类应用,例如可以包括系统相机或第三方相机应用)。视频类应用,例如可以包括等等。音频类应用,例如可以包括qq等等。以下实施例中提到的应用,可以是电子设备出厂时已安装的应用,也可以是用户在使用电子设备的过程中从网络下载或其他电子设备获取的应用。
52.2)、电子设备,可以为能够安装应用的设备。可选的,所述电子设备可以是终端设备,例如,所述终端设备可以是手机、笔记本电脑、平板电脑、车载电脑、个人数字助理(personal digital assistant,pda)、智能手表、个人计算机((personal computer,pc)、膝上型计算机(laptop)、电视机等等。当然所述电子设备不限于上述列举的终端设备,本技术对此不作限定。
53.所述电子设备可以支持多种应用,如文字处理应用、电话应用、电子邮件应用、即时消息应用、照片管理应用、网络浏览应用、数字音乐播放器应用、数字视频播放器应用等等中的部分或全部应用。
54.应理解,在本技术中除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。
55.在本技术中,“示例性的”、“在一种可选的实施方式中”、“在另一种可选的实施方式中”等用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
56.另外,本技术中涉及的“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,也不能理解为指示或暗示顺序。
57.为了更加清晰地描述本技术实施例的技术方案,下面结合附图,对本技术实施例提供的应用异常的处理方法及电子设备进行详细说明。
58.本技术实施例可以适用于任何能够安装应用的电子设备。图1示出了电子设备的一种示例性的结构图,如图1所示,电子设备100可以包括:处理器110,外部存储器接口120,
内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。
59.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。在本技术中,处理器110可以执行用于实现本技术实施例的应用异常的处理方法的程序指令,以解决应用崩溃闪退的问题。
60.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备充电,也可以用于电子设备与外围设备之间传输数据。
61.充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。
62.电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
63.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
64.移动通信模块150可以提供应用在电子设备上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
65.无线通信模块160可以提供应用在电子设备上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙
(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
66.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
67.显示屏194用于显示应用、图像、视频等的显示界面等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备可以包括1个或n个显示屏194,n为大于1的正整数。在本技术中,显示屏194可以显示应用的界面。
68.摄像头193用于捕获静态图像或视频。在一些实施例中,摄像头193可以包括至少一个摄像头,例如一个前置摄像头和一个后置摄像头。
69.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,以及至少一个应用程序(例如爱奇艺应用,微信应用等)的软件代码等。存储数据区可存储电子设备100使用过程中所产生的数据(例如图像、视频等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。例如,在本技术中,内部存储器121可以存储用于实现本技术实施例的应用异常的处理方法的程序指令,处理器110可以调用存储在内部存储器121中的程序指令,以实现应用的异常处理。
70.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将图片,视频等文件保存在外部存储卡中。例如,在本技术中,外部存储卡中可以存储用户信息,例如存储用户的常用的应用的账户信息等等。
71.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
72.其中,传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
73.按键190可以包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
74.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现与电子设备100的接触和分离。
75.可以理解的是,本技术实施例图1示意的结构并不构成对电子设备100的具体限定。在一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
76.以安卓(android)系统为例,图2示出了本技术实施例提供的电子设备的软件结构框图。基于android系统,电子设备的软件结构可以是分层架构,分层架构可将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层(framework,fwk),安卓运行时(android runtime)和系统库,以及内核层。
77.应用程序层可以包括一系列应用程序包。如图2所示,应用程序层可以包括相机、设置、皮肤模块、用户界面(user interface,ui)、三方应用程序等。其中,三方应用程序可以包括微信、qq、图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等。
78.应用程序框架层为应用程序层的应用程序api和编程框架。应用程序框架层可以包括一些预先定义的函数。如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在
状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
79.系统库包括安卓运行时android runtime,android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
80.系统库还可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2d图形引擎是2d绘图的绘图引擎。
81.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。示例性的,显示驱动被调用后,由显示驱动在显示屏上显示相应的界面。
82.硬件层可以包括各类传感器,例如加速度传感器、陀螺仪传感器、触摸传感器等。
83.需要说明的是,上述android系统仅仅是一种示例性的电子设备的系统,并不对电子设备的系统做出限定。可选的,电子设备可以但不限于搭载或者其它操作系统等。
84.具体的,在以下的实施例中,涉及的方案均可以在具有上述硬件结构的电子设备100中实现。在以下的实施例中均以电子设备的一个应用来进行说明,应理解电子设备的所有应用均符合以下描述,本技术不再区分应用的个数。
85.目前,用户在使用安装在电子设备的应用的过程中,经常会遇到应用异常的情况,用户最直接的体验就是应用崩溃闪退,导致用户体验较差。例如,用户在使用应用的过程中,应用发生异常导致应用崩溃闪退。又例如,用户在想要使用一个应用,在应用启动时应用崩溃闪退造成应用不能启动成功。上述场景中应用异常直接导致用户体验较差。具体的,当前通常大部分应用可以是多线程,由应用用户界面(user interface,ui)主线程以及其他各种业务子线程组成,进程中任何线程发生故障抛出,线程出现异常时,系统会杀掉当前进程,使整个应用进程退出,从而发生崩溃(crash)/tombstone崩溃闪退现象。
86.发生上述应用崩溃闪退现象的主要原因是:大部分应用包括出厂应用及第三方应用,都会依赖sdk、jar、lib等,调用其中的api实现一些特定的功能,这些应用依赖sdk等的行为和质量不可控。例如当在当前线程调用api接口时线程发生异常或者在当前进程新建子线程调用api接口时子线程发生异常未被处理时,就可能导致进程被杀,应用发生崩溃闪退。例如,通话应用对应的通话模块调用sdk中创建的线程异常会导致通话进程发生崩溃,导致用户无法接打电话,对用户影响非常大。例如,如果通话应用中发生异常的线程仅是实现显示对方电话号码归属地的线程,当该线程出现异常时,实际上仅仅是不能显示对方号码的归属地,而不影响继续通话,但是当前该线程出现异常同样导致应用发生崩溃闪退,造成用户不能通话,使用户体验较差。
87.从大量应用崩溃闪退的问题分析来看,大部分应用崩溃闪退由应用子线程中异常
导致,而很多应用子线程功能并非核心业务,只是某个功能项或者后台业务逻辑行为,这些子线程异常不应该导致应用核心的主进程退出发生崩溃。也就是说,应用某个子线程发生异常,其实应用仍然可以继续运行的,或能保证核心功能正常运行,而不是直接发生崩溃闪退掉,导致应用完全无法使用。但是,在如图3所示的现有当前机制下,非核心功能尤其依赖外部sdk创建的子线程发生异常时,因为异常的子线程无法被拦有效拦截,会导致整个应用进程被杀掉发生崩溃闪退,因此当前的机制是不符合可靠性设计的原则(故障隔离、外部第三方故障隔离等)。
88.基于此,本技术提出一种应用异常的处理方法,通过增加异常分析处理的判断机制,来确定是否杀掉当前进程,以使在应用的子线程发生异常时,只退出子线程,而不会杀掉应用的进程,以保证应用正常进行,从而达到解决应用崩溃闪退的问题。其中需要说明的是,在本技术中退出子线程可以是指杀掉子线程。
89.示例性的,如图4所示,采用本技术的方法,在电子设备上的应用发生异常后,电子设备的处理器采用异常分析处理机制,来决策是否杀掉当前进程,进而确定是保证应用受限运行,还是可以允许应用崩溃闪退。
90.具体的,在本技术实施例中,电子设备可以通过判断应用异常是否符合以下两种方法中的任一种方法来实现应用的异常恢复,即保持应用进程受限运行,不将应用进程杀掉导致应用发生崩溃闪退问题:
91.方法a1:电子设备判断导致当前应用发生异常的是该应用的特定的线程、子线程、线程组件或者线程组件中的子线程发生异常导致的,则所述电子设备保持当前应用继续运行。
92.其中,该应用的特定的线程、子线程、线程组件或者线程组件中的子线程,可以是应用开发者在开发应用时,根据应用功能或应用需求自行预先针对该应用定义的可以隔离的线程、子线程、线程组件或者线程组件中的子线程,也可以称之为隔离线程组件或隔离线程。
93.具体的,隔离线程组件或隔离线程可以是被预先封装的具有唯一标识并可以作为一种公共组件使用的线程组件或线程;该隔离线程组件或隔离线程可以用来调用sdk、jar、lib等、或执行非核心业务功能的任务等。示例性的,隔离线程组件或隔离线程继承自通用线程,包括通用线程的特征,同时具有独特的标识,包括特定的名称且不能自定义,包括自动分配的标识符;通过上述特征可识别一个线程为隔离线程。通常情况下执行非核心业务功能使用隔离线程,使用隔离线程时和使用普通线程无差别,仅当线程内发生异常时,进行识别为隔离线程的异常处理机制。
94.在该方法a1中,电子设备的系统侧(也即电子设备的处理器)在分析应用的异常时,当识别到是隔离线程组件或隔离线程发生异常时,则不会杀掉应用进程,保证应用受限运行,从而避免应用崩溃闪退。
95.示例性的,图5示出了一种应用运行的过程示意图,在该示例中应用进程创建了隔离线程后,在隔离线程发生异常时,电子设备不杀掉(kill)当前应用进程,只退出隔离线程(可以指杀掉隔离线程),使当前应用进程继续运行,避免应用崩溃闪退,从而提高用户体验。具体的,图5所示的示例的具体流程可以包括以下步骤:
96.步骤501:电子设备的应用进程创建一个隔离线程。
97.具体的,电子设备的应用在运行过程中,应用需要实现某个业务时,需要创建业务对应的线程。示例性的,这里应用需要实现的业务是一个非核心功能的业务,则电子设备的应用主进程创建了该非核心功能的业务对应的隔离线程。需要说明的是,本技术中涉及的核心功能的业务可以是与应用本身相关的基本功能的业务,非核心功能的业务可以是对应用本身的基本功能相关性较弱的功能的业务。例如通话应用中通话功能的业务可以是通话应用的核心功能的业务,而现实通话号码位置的功能的业务可以是通话应用的非核心功能的业务。
98.示例性的,电子设备的应用进程在创建一个隔离线程的时候,会将第三方预先给该隔离线程定义的标识分配给创建的该隔离线程。
99.例如,在下述场景中,电子设备的应用进程可以创建隔离线程:要依赖使用某厂家提供的接口(api)和不影响核心功能的后台任务统计、数据同步、数据清理、分析、解析等等场景下都可以使用隔离线程。例如,电子设备的应用进程在创建线程时,当识别到实现后台任务统计、数据同步、数据清理、分析、解析等等业务的线程对应的标识为隔离线程的标识时,电子设备在上述情况下创建的线程即为隔离线程。后续在判断一个线程是否为隔离线程时,可以直接通过线程的标识去判断一个线程是否为隔离线程。
100.步骤502:隔离线程通过调用接口调用sdk时发生异常。
101.步骤503:电子设备的处理器处理异常。
102.具体的,当隔离线程发生异常时,就会导致应用出现异常,进而触发电子设备的处理器识别到该应用发生异常后,针对当前应用进行异常处理。示例性的,电子设备处理异常时,电子设备的处理器确定导致应用异常的是隔离线程发生异常导致的时,会退出隔离线程(可以指杀掉隔离线程),而不会杀掉当前应用进程,从而使进程受限运行,使得应用可以继续运行,不会发生应用崩溃闪退。示例性的,上述处理的具体过程可以参考图5中步骤503中示出的过程所示。
103.示例性的,电子设备的处理器确定导致应用异常的是隔离线程发生异常导致的,具体过程可以为:电子设备的处理器确定导致应用异常的子线程的标识与创建的隔离线程的标识相同。
104.方法a2:电子设备判断导致当前应用异常的是当前应用的子线程发生连续性相同故障导致的,则所述电子设备保持当前应用继续运行。
105.具体的,具有相同故障特征信息的故障,可以称之为相同故障。在一种可选的实施方式中,故障特征信息可以如下表1所示:
106.表1
107.[0108][0109]
示例性的,当该应用的子线程发生异常时,电子设备从子线程的异常信息中提取故障特征信息,并分析该故障特征信息与记录的之前一段预设时长内该应用发生预设次数的崩溃闪退时的故障特征信息是否相同,若相同,则说明发生连续性相同故障,否则没有发生连续性相同故障。
[0110]
在一个示例中,以是否存在连续性散点来判断是否存在连续性故障,其中一个散点即表示发生一次故障,具体判断过程可以为:以一次应用启动时刻为起点,以x为时间单位,子线程发生故障的时间点t在x时间内,当在x时间内只要存在任意故障即为一个散点,当满足至少不低于连续n个时间单位存在相同散点,即为连续性故障。其中,x为固定值,例如15秒等,n为经验值,例如n为3等。
[0111]
例如,图6示出了一种连续性故障示意图,在图6中,假设第一次应用启动后的15秒内,在t1时子线程发生故障1,导致应用崩溃闪退,电子设备记录此次的故障特征信息;在之后的第二次应用启动后的15秒内,在t2时子线程发生故障2,导致应用崩溃闪退,电子设备记录此次的故障特征信息;在之后的第三次应用启动后的15秒内,在t3时子线程发生故障3,此时,电子设备的处理器根据第三次应用启动时的故障特征信息与记录的前两次应用启动时导致应用崩溃闪退的故障特征信息相同时,则电子设备确定这三次子线程故障为相同故障,然后此次电子设备退出发生故障的子线程,而保持应用进程受限运行,从而保证应用继续进行。其中,每两次应用启动之间的时间间隔较短,例如可以在一次应用崩溃闪退之后立刻进行下一次应用启动。
[0112]
需要说明的是,图6中仅以时间单位为15秒为例,以连续三次发生子线程故障为例说明,这并不构成对本技术的限定。
[0113]
示例性的,在方法a2中,电子设备针对应用异常的处理过程可以如图7所示,具体可以包括以下步骤:
[0114]
步骤701:电子设备的应用启动。
[0115]
步骤702:电子设备确定应用发生异常。在一些可能的实施例中,应用崩溃闪退。
[0116]
示例性的,当应用发生异常时,触发电子设备的处理器识别到应用故障代码,从而电子设备确定应用发生异常。
[0117]
步骤703:电子设备判断当前应用异常是否为应用子线程连续性故障,若是则执行步骤705,否则应用崩溃闪退。
[0118]
在该步骤703中,在电子设备判断当前应用异常是否为应用子线程连续性故障时,过程具体可以包括步骤703a:电子设备分析并记录本次故障特征信息;其中,分析本次故障特征信息是确定本次故障特征信息是否与之前预设时长内该应用发生预设次数的崩溃闪退时的故障特征信息相同,若是则说明发生应用子线程连续性故障,否则不是应用子线程连续性故障。
[0119]
步骤704:电子设备退出异常的子线程。在一些可能的实施例,应用本次崩溃,在下次启动的时候,在启动该子线程的时候,在子线程抛出异常时,退出异常的子线程。
[0120]
步骤705:电子设备的应用进程受限运行。
[0121]
通过上述过程,电子设备可以针对子线程发生连续性相同故障导致的应用异常进行恢复,保证应用进程的受限进行。
[0122]
示例性的,假设电子设备通过上述图7中的方法保证应用受限运行的情况下,若继续运行的应用是用户不能满足需求时,用户也可以自行选择重新打开该应用。例如,电话应用启动时,电子设备在通过图7所示的方法判断发生故障的子线程为通话功能对应的线程,电子设备退出通话功能的子线程保证应用继续启动运行后,用户使用该通话应用时不能进行通话,但是可以查看联系人通话记录,如果用户只是想要查看联系人通话记录的情况下,目前运行的通话应用完全可以满足用户的使用需求,如果用户除了想要查看联系人通话记录以外,还想要使用通话应用打电话,此时用户可以自行重新打开该通话应用以实现打电话的目的。
[0123]
基于上述两种方法,在一种可能的实施例中,电子设备针对应用异常的处理过程可以如图8所示,具体可以包括以下步骤:
[0124]
步骤801:电子设备的应用启动。
[0125]
步骤802:电子设备确定应用发生异常。
[0126]
示例性的,当应用发生异常时,触发电子设备的处理器识别到应用故障代码,从而电子设备确定应用发生异常。
[0127]
步骤803:电子设备判断当前应用异常是否是应用的隔离线程发生异常,若是则执行步骤805,否则执行步骤804。
[0128]
步骤804:电子设备判断当前应用异常是否为应用子线程连续性故障,若是则执行步骤805,否则应用崩溃闪退。
[0129]
在该步骤804中,在电子设备判断当前应用异常是否为应用子线程连续性故障时,过程具体可以包括步骤804a:电子设备分析并记录本次故障特征信息;其中,分析本次故障特征信息是确定本次故障特征信息是否与之前预设时长内该应用发生预设次数的崩溃闪退时的故障特征信息相同,若是则说明发生应用子线程连续性故障,否则不是应用子线程连续性故障。
[0130]
步骤805:电子设备退出异常的子线程。
[0131]
步骤806:电子设备的应用进程受限运行。
[0132]
通过上述过程,电子设备可以针对应用异常进行恢复,保证应用进程的继续进行。
[0133]
需要说明的是,在图8所示的流程中,步骤802和步骤803的顺序仅仅作为示例,采用上述顺序可以使电子设备的分析过程实现比较简单。应理解,也可以先进行步骤803中的判断,不成立时,再进行步骤802中的判断,具体的流程不再具体示出。当然,还可以直接判断应用异常是否属于步骤802和803中的任一种,若是则直接执行步骤805,否则应用崩溃闪退。
[0134]
在一个示例性的实施例中,以电子设备安装的电话应用为例,采用本技术提供的异常的处理方法的过程可以为:当电子设备的电话应用需要实现语音通话功能时,调用外部的sdk时,通过调用sdk的api接口实现xx业务的子线程发生异常,触发电子设备识别到该子线程异常后,确定该子线程是隔离线程,从而确定该子线程的业务不会影响电话应用的正常使用,因此电子设备执行退出该子线程的操作,进程仍保持受限运行不会被杀退出,保
证电话应用的进程受限运行,从而保证用户可以通过该电话应用正常通话。
[0135]
需要说明的是,上述对本技术方法的描述中,均是电子设备在判断当前异常符合条件后,直接退出子线程,进行了异常恢复,保证应用继续运行,避免应用闪退崩溃。在一种可选的实施方式中,为了提高用户的体验,使用户能够体验应用的完整功能,在应用出现异常的情况下,电子设备在可以进行应用恢复后,可以呈现提示界面,来问询用户的意愿。例如,电子设备可以呈现如图9所示的界面,让用户自行选择是应用继续运行还是应用关闭。电子设备根据用户的点击来进行后续操作,当电子设备识别到用户点击了“是”,则电子设备关闭当前异常子程序,保证应用进程受限运行,从而使应用继续运行;当电子设备识别到用户点击了“否”,则电子设备允许应用崩溃闪退。
[0136]
基于以上实施例,本技术实施例还提供了一种电子设备,用于实现本技术实施例提供的应用异常的处理方法。示例性的,参阅图10所示,电子设备1000可以包括第一处理单元1001和第二处理单元1002。其中,第一处理单元1001和第二处理单元1002可以但不限于通过图1中所示的处理器110来实现。
[0137]
在一个实施例中,电子设备1000在实现本技术实施例提供的应用异常的处理方法时,具体可以包括:
[0138]
第一处理单元1001,可以用于在电子设备1000应用异常的情况下,确定所述应用异常为所述应用的隔离线程异常;第二处理单元1002,可以用于退出异常的所述隔离线程,保持所述应用的进程运行。
[0139]
在一种可选的实施方式中,所述隔离线程为针对所述应用的功能预设的线程。
[0140]
具体的,所述第一处理单元1001在确定所述应用异常为所述应用的隔离线程异常时,具体可以用于:确定所述应用的线程中异常的线程的标识与预设的所述隔离线程的标识相同。
[0141]
示例性的,所述隔离线程可以用于调用sdk、jar或c/c++lib。
[0142]
在一种可选的实施方式中,所述隔离线程可以用于实现所述应用的非核心功能的业务。
[0143]
具体的,所述第二处理单元1002退出异常的所述隔离线程时,具体可以用于:杀掉异常的所述隔离线程。
[0144]
在另一个实施例中,电子设备1000在实现本技术实施例提供的应用异常的处理方法时,具体可以包括:
[0145]
所述第一处理单元1001,可以用于在电子设备1000应用异常的情况下,确定所述应用异常为所述应用的子线程连续性故障,其中,所述子线程连续性故障指示一个子线程在预设时长内发生第n次相同的故障;所述第二处理单元1002可以用于退出异常的子线程,保持所述应用的进程运行。
[0146]
在一种可选的实施方式中,所述第一处理单元1001确定所述应用异常为所述应用的子线程连续性故障时,具体可以用于:获取所述应用异常的当前故障特征信息;确定所述当前故障特征信息与第一故障特征信息相同,所述第一故障特征信息为当前应用异常之前的预设时长内,所述应用发生预设次数的异常时的故障特征信息。
[0147]
在另一种可选的实施方式中,所述第一处理单元1001还可以用于保存所述当前故障特征信息。
[0148]
示例性的,所述当前故障特征信息可以为以下其中一项:进程名称、应用名称、应用用户名、应用版本号、线程名称、异常类型、异常信息或异常堆栈。
[0149]
具体的,所述第二处理单元1002退出异常的子线程时,具体可以用于杀掉异常的子线程。
[0150]
可选的,所述n为大于或者等于3的整数。
[0151]
在另一个实施例中,电子设备1000在实现本技术实施例提供的应用异常的处理方法时,具体可以包括:
[0152]
所述第一处理单元1001可以用于在电子设备1000应用异常的情况下,判断所述应用异常是否为所述应用的隔离线程异常;所述第二处理单元1002可以用于当所述第一处理单元1001确定所述应用异常为所述应用的隔离线程异常时,退出异常的所述隔离线程,保持所述应用的进程运行;当所述第一处理单元1001确定所述应用异常不为所述应用的隔离线程异常时,且确定所述应用异常为所述应用的子线程连续性故障时,退出异常的子线程,保持所述应用的进程运行;其中,所述子线程连续性故障指示一个子线程在预设时长内发生第n次相同的故障。
[0153]
示例性的,所述隔离线程为针对所述应用的功能预设的线程。
[0154]
具体的,所述第一处理单元1001判断所述应用异常是否为所述应用的隔离线程异常时,具体可以用于:判断所述应用的线程中异常的线程的标识与预设的所述隔离线程的标识是否相同;当确定所述应用的线程中异常的线程的标识与预设的所述隔离线程的标识相同时,确定所述应用异常为所述应用的隔离线程异常;当确定所述应用的线程中异常的线程的标识与预设的所述隔离线程的标识不相同时,确定所述应用异常不为所述应用的隔离线程异常。
[0155]
在一种可选的实施方式中,所述隔离线程用于调用sdk、jar或c/c++lib。
[0156]
在另一种可选的实施方式中,所述隔离线程用于实现所述应用的非核心功能的业务。
[0157]
具体的,所述第二处理单元1002退出异常的所述隔离线程时,具体可以用于:杀掉异常的所述隔离线程。
[0158]
在一种可选的实施方式中,所述第一处理单元1001确定所述应用异常为所述应用的子线程连续性故障时,具体可以用于:获取所述应用异常的当前故障特征信息;确定所述当前故障特征信息与第一故障特征信息相同,所述第一故障特征信息为当前应用异常之前的预设时长内,所述应用发生预设次数的异常时的故障特征信息。
[0159]
可选的,所述第一处理单元1001还可以用于保存所述当前故障特征信息。
[0160]
示例性的,所述当前故障特征信息可以为以下其中一项:进程名称、应用名称、应用用户名、应用版本号、线程名称、异常类型、异常信息或异常堆栈。
[0161]
具体的,所述第二处理单元1002退出异常的子线程时,具体可以用于:杀掉异常的子线程。
[0162]
可选的,所述n为大于或者等于3的整数。
[0163]
需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本技术的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一
个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0164]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0165]
基于以上实施例,本技术实施例还提供了一种电子设备,用于实现本技术实施例提供的应用异常的处理方法。示例性的,参阅图11所示,该电子设备1100可以包括一个或多个处理器1101以及存储器1102。其中,处理器1101可以通过图1中所示的处理器110来实现,存储器1102可以通过图1中的内部存储器121来实现。具体的,存储器1102可以用于存储计算机程序代码,计算机程序代码包括计算机指令,处理器1101可以用于调用存储器1102中的计算机指令执行上述应用异常的处理方法中的各个操作。具体的,处理器1101的执行过程可以参见上述应用异常的处理方法中的相关描述,此处不再详细描述。
[0166]
可选的,电子设备1100还可以包括总线803。其中,所述处理器1101和所述存储器1102通过所述总线1103进行通信,也可以通过无线传输等其他手段实现通信。可选的,所述总线1103可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0167]
基于以上实施例,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的任一种应用异常的处理方法。
[0168]
本技术实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的任一种应用异常的处理方法。
[0169]
本技术实施例还提供一种芯片,包括处理器,所述处理器与存储器耦合,用于调用所述存储器中的程序使得所述芯片实现上述方法实施例提供的任一种应用异常的处理方法。
[0170]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0171]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或
方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0172]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0173]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0174]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1