CN114489917A - 应用程序异常退出的处理方法、电子设备和可读存储介质 - Google Patents
应用程序异常退出的处理方法、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN114489917A CN114489917A CN202210355559.0A CN202210355559A CN114489917A CN 114489917 A CN114489917 A CN 114489917A CN 202210355559 A CN202210355559 A CN 202210355559A CN 114489917 A CN114489917 A CN 114489917A
- Authority
- CN
- China
- Prior art keywords
- interface
- abnormal
- information
- application program
- target application
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种应用程序异常退出的处理方法、电子设备和可读存储介质,该方法由电子设备执行,电子设备安装有目标应用程序,该方法包括:响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出;若目标应用程序上一次运行过程中发生异常退出,则获取异常界面的跳转信息和异常界面中的用户输入数据;异常界面是指目标应用程序上一次发生异常退出时所在的界面,用户输入数据包括用户在异常界面中的输入内容和输入内容在异常界面中的输入位置;根据异常界面的跳转信息,恢复异常界面;根据用户输入数据,在异常界面中的输入位置恢复输入内容。该方法能够实现对异常界面的恢复,提高用户体验。
Description
技术领域
本申请涉及电子技术领域,具体涉及一种应用程序异常退出的处理方法、电子设备和可读存储介质。
背景技术
为了满足用户的不同需求,电子设备中会安装各种应用程序(application,APP)。应用程序在使用过程中,可能因为应用程序本身或操作***故障导致异常退出。其中,故障包括但不限于程序故障(bug)类故障或者资源类故障。程序故障类故障例如空指针引起的应用程序崩溃(crash)。资源类故障例如因内存泄漏导致***OOM Killer(out of memorykiller),进而导致应用程序被清理。
无论是哪一种故障类型导致的应用程序异常退出,都会使用户体验非常不好。
发明内容
本申请提供了一种应用程序异常退出的处理方法、电子设备和可读存储介质,能够恢复异常界面及异常界面中用户输入的内容,无需用户重复操作,提高用户体验。
第一方面,本申请提供一种应用程序异常退出的处理方法,该方法由电子设备执行,电子设备安装有目标应用程序,该方法包括:
响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出;若目标应用程序上一次运行过程中发生异常退出,则获取异常界面的跳转信息和异常界面中的用户输入数据;异常界面是指目标应用程序上一次发生异常退出时所在的界面,用户输入数据包括用户在异常界面中的输入内容和输入内容在异常界面中的输入位置;根据异常界面的跳转信息,恢复异常界面;根据用户输入数据,在异常界面中的输入位置恢复输入内容。
可选的,异常界面的跳转信息可以为异常界面的活动(Activity)的信息,例如,Activity的名称、标签等信息。
可选的,输入位置可以通过界面中控件的身份标识来表征。用户输入的内容例如可以为用户输入的文字、导入的图片、绘制的图像或选择的选项等。
第一方面提供的应用程序异常退出的处理方法,在上一次目标应用程序发生异常退出的情况下,通过获取异常界面的跳转信息和异常界面中的用户输入数据,根据异常界面的跳转信息,恢复异常界面,并根据用户输入数据,在异常界面的输入位置恢复输入内容。如此,用户再启动目标应用程序时,无需用户重复对界面跳转的操作,且无需用户重复输入内容,保证了用户操作的连续性,降低用户操作复杂度,提高用户体验。
一种可能的实现方式中,根据异常界面的跳转信息,恢复异常界面,包括:根据异常界面的跳转信息,启动异常界面;若异常界面启动失败,则获取异常界面的依赖界面的跳转信息;异常界面的依赖界面是指用于输入第一信息的界面,第一信息用于生成启动异常界面所必需的第一依赖信息;根据异常界面的依赖界面的跳转信息,启动异常界面的依赖界面;获取用户通过异常界面的依赖界面输入的第一信息,并根据第一信息生成第一依赖信息;根据第一依赖信息和异常界面的跳转信息,启动异常界面。
该实现方式中,在异常界面启动失败的情况下,首先跳转至异常界面的依赖界面,通过依赖界面获取第一信息并生成第一依赖信息,解除依赖,再跳转至异常界面。这样,使得对异常界面进行恢复时,即使存在依赖界面,也能够实现恢复,提高本方法的适用性和实用性。
一种可能的实现方式中,第一依赖信息包括鉴权成功信息和用户授权信息中的至少一种,鉴权成功信息用于表征用户的身份信息符合预设的权限校验规则,用户授权信息用于表征对预设操作具有执行权限。
可选的,鉴权成功信息可以为预设的鉴权码。用户授权信息可以为预设的授权码。
可选的,依赖界面可以为账号登录界面和/或权限申请界面。
一种可能的实现方式中,响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出之前,该方法还包括:在目标应用程序运行过程中,检测目标应用程序发生的异常,并生成异常信息,异常信息包括异常界面的跳转信息;在目标应用程序退出之前,保存用户输入数据。
可选的,异常信息中可以包括发生异常的应用程序的信息、异常界面的跳转信息、发生异常的时间和异常类型等中的一种或多种。
该实现方式中,在目标应用程序运行过程中检测目标应用程序发生的异常,并生成异常信息,且对异常界面中的用户输入数据进行保存,从而便于后续启动目标应用程序时对异常界面以及异常界面中的用户输入的内容进行恢复,无需用户重复对界面跳转的操作,且无需用户重复输入内容,保证了用户操作的连续性,降低用户操作复杂度,提高用户体验。
一种可能的实现方式中,在目标应用程序退出之前,保存用户输入数据,包括:新建数据保存线程,并将数据保存线程的优先级设为最高优先级;基于数据保存线程保存用户输入数据。
该实现方式中,新建数据保存线程,并将数据保存线程的优先级设为最高优先级,这样能够在检测到异常后,对目标应用程序的运行进行短暂拦截,抢占中央处理器(central processing unit,CPU),防止目标应用程序立即退出,从而能够及时保存异常界面中的用户输入数据,便于后续对异常界面中用户的输入内容进行恢复。而且,将数据保存线程优先级设置为最高优先级,还能够防止目标应用程序因应用无响应(application notresponse,ANR)导致数据保存模块无法执行功能等情况,进一步保证了对用户输入数据保存的及时性和可靠性,从而便于后续对异常界面中用户输入的内容进行恢复。
一种可能的实现方式中,检测目标应用程序发生的异常,包括:监听目标应用程序的预设异常信号,预设异常信号用于表征应用程序出现会导致应用程序退出的异常。
一种可能的实现方式中,预设异常信号包括杀死进程SIGKILL信号、进程挂起SIGHUP信号和应用无响应ANR信号中的至少一种。
该实现方式中,通过监听目标应用程序的预设异常信号,能够简单便捷的检测目标应用程序的异常,提高异常检测的效率和准确性。
一种可能的实现方式中,确定目标应用程序上一次运行过程中是否发生异常退出,包括:确定是否存在目标应用程序上一次运行过程中的异常信息;若存在,则确定目标应用程序上一次运行过程中发生异常;若不存在,则确定目标应用程序上一次运行过程中未发生异常。
可以理解,电子设备可以保存多个应用程序的异常信息,或者保存有目标应用程序多次运行过程中的异常信息,通过确定是否存在目标应用程序上一次运行过程中的异常信息,能够简单、直接的确定目标应用程序上一次运行过程中是否发生异常退出,提高异常检测和异常恢复的效率。
一种可能的实现方式中,根据用户输入数据,在异常界面中的输入位置恢复输入内容之后,该方法还包括:删除目标应用程序的异常信息。
该实现方式中,在完成对异常界面及异常界面中输入内容的恢复后,删除目标应用程序的异常信息,这样便于电子设备在目标应用程序后续发生异常时存储异常信息,使得电子设备在目标应用程序无异常发生时无异常信息,在目标应用程序有异常信息时该信息即为上一次发生异常的异常信息,如此便于确定目标应用程序的历史运行情况,从而便于进行界面恢复,提高算法运行效率。
一种可能的实现方式中,该方法还包括:若目标应用程序上一次运行过程中未发生异常退出,则启动目标应用程序的预设启动界面。
可选的,预设启动界面可以为预先设置的启动目标应用程序时的默认界面。
该实现方式中,在目标应用程序上一次运行过程中未发生异常退出的情况下,启动目标应用程序的预设启动界面,保证了目标应用程序的正常启动。
一种可能的实现方式中,电子设备安装有操作***,该方法包括:操作***响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出,若目标应用程序上一次运行过程中发生异常退出,则操作***获取异常界面的跳转信息,并根据异常界面的跳转信息,恢复异常界面;目标应用程序获取异常界面中的用户输入数据,并根据用户输入数据,在异常界面中的输入位置恢复输入内容。
可选的,操作***可以为分层架构,事件驱动架构,微核架构,微服务架构,或云架构等。在一个具体的实施例中,操作***为安卓(Android)操作***,该操作***包括应用程序层、应用程序框架层、安卓运行时(Android runtime)和***库以及内核层。目标应用程序可以位于该操作***的应用程序层。
可以理解,操作***相较于目标应用程序,便于进行界面跳转;而由于用户对目标应用程序操作复杂,随机性强,且目标应用程序多具有数据保护机制等原因,目标应用程序相较于操作***,便于获取和显示用户输入数据。该实现方式中,由操作***根据目标应用程序的历史运行情况跳转界面,由目标应用程序对异常界面中的用户的输入内容进行恢复,通过混合架构实现了对异常界面的恢复。这样,既利用了操作***便于进行界面跳转的优势,又利用了目标应用程序便于获取和显示用户输入数据的优势,二者相互配合,提高了对异常界面恢复的便利性和灵活性,进而提高对目标应用程序异常退出处理的效率,也减小了操作***的执行压力。而且,通过目标应用程序恢复用户输入的内容,使得用户在界面中输入的内容不会***作***获取,保证了用户输入数据的安全性。
一种可能的实现方式中,操作***包括位于应用程序框架层的历史运行情况确定模块、异常检测模块和活动管理服务,操作***响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出,若目标应用程序上一次运行过程中发生异常退出,则操作***获取异常界面的跳转信息,并根据异常界面的跳转信息,恢复异常界面,包括:
历史运行情况确定模块响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出;若目标应用程序上一次运行过程中发生异常退出,则历史运行情况确定模块从异常检测模块获取异常界面的跳转信息;活动管理服务根据异常界面的跳转信息,恢复异常界面。
一种可能的实现方式中,目标应用程序包括依赖配置文件,依赖配置文件用于存储目标界面的依赖界面的跳转信息,目标界面是指目标应用程序中存在依赖界面的界面,目标界面的依赖界面是指用于输入目标信息的界面,目标信息用于生成启动目标界面所必需的依赖信息,应用程序框架层还包括依赖信息生成模块;活动管理服务根据异常界面的跳转信息,恢复异常界面,包括:活动管理服务根据异常界面的跳转信息,启动异常界面;若异常界面启动失败,则活动管理服务从依赖配置文件中获取异常界面的依赖界面的跳转信息,并根据异常界面的依赖界面的跳转信息,启动异常界面的依赖界面;依赖信息生成模块获取用户通过异常界面的依赖界面输入的第一信息,并根据第一信息生成第一依赖信息;第一信息为异常界面的依赖界面对应的目标信息,第一依赖信息为启动异常界面所必需的依赖信息;活动管理服务根据第一依赖信息和异常界面的跳转信息,启动异常界面。
也就是说,依赖配置文件中可以保存有至少一个目标界面的依赖界面的跳转信息。至少一个目标界面中包括异常界面。异常界面的依赖界面中输入的目标信息称为第一信息,异常界面的依赖信息称为第一依赖信息。
可选的,依赖配置文件中可以包括目标应用程序中目标界面的跳转信息、依赖界面的跳转信息以及目标界面与依赖界面的对应关系等。
该实现方式中,通过将目标界面和目标界面的依赖界面的跳转信息保存于依赖配置文件,在异常界面启动失败的情况下,首先跳转至异常界面的依赖界面,通过依赖界面获取相关的信息生成依赖信息,解除依赖,再跳转至异常界面。这样,使得对异常界面进行恢复时,即使存在依赖界面,也能够实现恢复,提高本方法的适用性和实用性。
一种可能的实现方式中,目标应用程序包括数据保存模块和数据恢复模块,目标应用程序获取异常界面中的用户输入数据,并根据用户输入数据,在异常界面中的输入位置恢复输入内容,包括:数据恢复模块从数据保存模块中获取用户输入数据,并在异常界面中的输入位置恢复输入内容。
该实现方式中,在目标应用程序中设计数据恢复模块和数据保存模块,通过数据恢复模块实现了对异常界面中用户的输入内容的恢复,充分利用目标应用程序便于获取和显示用户输入数据的优势,减轻了操作***的执行压力,且防止用户输入数据***作***获取,保证了用户输入数据的安全性。
一种可能的实现方式中,操作***包括位于应用程序框架层的活动管理服务,应用程序框架层还包括数据恢复接口,数据恢复接口与数据恢复模块对接,数据恢复模块从数据保存模块中获取用户输入数据,并在异常界面中的输入位置恢复输入内容,包括:活动管理服务调用数据恢复接口,通过数据恢复模块从数据保存模块中获取用户输入数据,并在异常界面中的输入位置恢复输入内容。
该实现方式中,操作***的应用程序架构层提供数据恢复接口,应用程序根据提供的接口适配对应的数据恢复模块即可实现对异常界面的恢复,这样使得操作***能够适配和对接更多应用程序,保证了操作***的开放性,且保证了应用程序设计的灵活性。
一种可能的实现方式中,操作***包括位于应用程序框架层的异常检测模块,目标应用程序包括数据保存模块,操作***响应于对目标应用程序的启动操作,确定目标应用程序上一次运行过程中是否发生异常退出之前,该方法还包括:在目标应用程序运行过程中,异常检测模块检测目标应用程序发生的异常,并生成异常信息,异常信息包括异常界面的跳转信息;通过数据保存模块保存用户输入数据。
该实现方式中,通过数据保存模块实现了对异常界面中用户输入数据的保存,充分利用目标应用程序便于获取和保存用户输入数据的优势,减轻了操作***的执行压力,且防止用户输入数据***作***获取,保证了用户输入数据的安全性。
一种可能的实现方式中,应用程序框架层还包括数据保存接口,数据保存接口与数据保存模块对接,通过数据保存模块保存用户输入数据,包括:异常检测模块调用数据保存接口,通过数据保存模块保存用户输入数据。
该实现方式中,操作***的应用程序架构层提供数据保存接口,目标应用程序根据提供的接口适配对应的数据保存模块即可实现对应用程序异常的检测和对用户输入数据的保存,这样使得操作***能够适配和对接更多应用程序,保证了操作***的开放性,且保证了应用程序设计的灵活性。
一种可能的实现方式中,数据保存接口为异步接口。
该实现方式中,数据保存接口采用异步接口,这样便于在异常检测模块检测到异常后,抢占CPU,对目标应用程序的运行进行短暂拦截,防止目标应用程序立即退出,从而能够及时保存异常界面中的用户输入数据,进而便于后续对异常界面中用户输入的内容进行恢复。
一种可能的实现方式中,操作***包括位于应用程序框架层的异常检测模块,根据用户输入数据,在异常界面中的输入位置恢复输入内容之后,该方法还包括:异常检测模块删除目标应用程序的异常信息。
该实现方式中,在完成对异常界面及异常界面中输入内容的恢复后,异常检测模块删除目标应用程序的异常信息,这样便于异常检测模块在目标应用程序后续发生异常时存储异常信息,使得异常检测模块在目标应用程序无异常发生时无异常信息,在目标应用程序有异常信息时该信息即为上一次发生异常的异常信息,如此便于历史运行情况确定模块确定目标应用程序的历史运行情况,从而便于进行界面恢复,提高算法运行效率。
一种可能的实现方式中,该方法还包括:若目标应用程序上一次运行过程中未发生异常退出,则操作***启动目标应用程序的预设启动界面。
可选的,可以通过操作***中位于应用程序框架层的活动管理服务启动目标应用程序的预设启动界面。
该实现方式中,在目标应用程序上一次运行过程中未发生异常退出的情况下,操作***启动目标应用程序的预设启动界面,保证了目标应用程序的正常启动。
第二方面,本申请提供一种装置,该装置包含在电子设备中,该装置具有实现上述第一方面及上述第一方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,接收模块或单元、处理模块或单元等。
第三方面,本申请提供一种电子设备,电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面的技术方案中任意一种方法。
第四方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选的,芯片还包括存储器,存储器与处理器通过电路或电线连接。
进一步可选的,芯片还包括通信接口。
第五方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面的技术方案中任意一种方法。
第六方面,本申请提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面的技术方案中任意一种方法。
附图说明
图1是本申请实施例提供的一例电子设备的结构示意图;
图2是本申请实施例提供的一例电子设备的软件结构框图;
图3是本申请实施例提供的一例应用程序异常退出的处理方法所适用的软件架构的示意图;
图4是本申请实施例提供的一例应用程序异常退出的处理方法的流程示意图;
图5是本申请实施例提供的一例应用程序异常退出的处理方法对应的界面变化示意图;
图6是本申请实施例提供的一例应用程序再启动场景下,应用程序异常退出的处理方法的流程示意图;
图7是本申请实施例提供的一例待恢复的异常界面与依赖界面的示意图;
图8是本申请实施例提供的另一例待恢复的异常界面与依赖界面的示意图;
图9是本申请实施例提供的另一例应用程序异常退出的处理方法的流程示意图;
图10为本申请实施例提供的一例具有依赖界面的异常界面恢复过程中的界面变化示意图;
图11为本申请实施例提供的又一例应用程序异常退出的处理方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本申请说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为更好地理解本申请实施例,以下对实施例中可能涉及的术语或概念进行解释说明。
OOM Killer,是当***内存严重不足时linux内核采用的杀掉进程以释放内存的机制。
应用程序,是可以使得电子设备为用户执行任务的应用软件。
进程(process),是应用程序关于某数据集合上的一次运行活动,是操作***进行资源分配和调度的基本单位。每一个进程都会占用一块地址空间,应用程序以一个或多个进程的形式运行在操作***上,实现相应的功能。
线程(thread),是进程的一个实体,它是比进程更小的能独立运行的基本单位。线程可与同属一个进程的其他的线程共享该进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
活动(Activity),是应用程序的组件。电子设备可以通过屏幕与用户交互以完成某项任务,Activity是电子设备与用户交互的基本单元。
服务(Service):是一种可以在电子设备的后台运行而没有用户界面(userinterface,UI)的应用组件。服务可以被其他组件调用。
活动管理服务(activity manager service,AMS),是Android***的一种服务,用于管理Activity的各种行为,控制Activity的生命周期,派发消息事件,低内存管理等等。
Intent,是Android***提供的用于协助应用间的交互与通信的通信机制,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android***根据Intent的描述,找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可以应用于应用程序之间的交互,也可以应用于应用程序内部的Activity或Service之间的交互。
监听,向被观察者注册一个***(回调函数)或者类似的信号采集装置,当被观察者发生变化时能够自动得到变化的通知。
崩溃,指用户进程或***进程在执行过程中发生异常而导致的退出。
以下结合实施例和附图对本申请提供的应用程序异常退出的处理方法进行阐述。
用户在使用应用程序过程中,应用程序发生异常退出会导致用户体验差。尤其是用户正在使用应用程序处理一些比较重要的工作,如编辑了大量文字、进行了大量图片处理、正在浏览重要新闻或者操作了复杂的网络跳转等,此时应用程序的异常退出会进一步放大用户的不良体验。
针对于此,本申请实施例提供一种应用程序异常退出的处理方法,用于检测应用程序的异常退出,并在应用程序下一次启动时,将界面恢复至发生异常时应用程序所展示的界面(下称异常界面),以提高用户体验。
该方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digitalassistant,PDA)等可以安装应用程序(application,APP)的电子设备上,本申请实施例对电子设备的具体类型不作任何限制。
示例性的,图1是本申请实施例提供的一例电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserial 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等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
电子设备100的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备100的软件结构。
图2是本申请实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android操作***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时和***库,以及内核层。应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,无线局域网(Wireless Local Area Network,WLAN),蓝牙,音乐,视频,短信息等应用程序。另外,可以理解,应用程序包还可以包括用户安装的其他应用程序,例如用于即时通信的应用程序(如微信)等。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括AMS,窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
AMS用于创建Activity,以启动用户界面(以下简称界面),以及用于管理Activity的各种行为,控制Activity的生命周期等。Activity是应用程序的组件,是电子设备与用户交互的基本单元,一个Activity对应一个界面。界面中可以包括栏、视图和控件等。用户可以在界面的控件中输入内容,例如输入文字、导入图片、绘制图像或选择选项等。
AMS可以根据界面的跳转信息启动对应的界面。其中,界面的跳转信息可以包括Activity的信息,例如Activity的名称、标签等信息。界面的跳转信息可以包含在Intent中。具体的,可以根据界面对应的Activity的信息定义Intent,以指明要启动哪一个界面。AMS根据Intent创建对应的Activity,显示对应的界面。可以理解,界面中每个控件可以具有一个唯一身份标识(identity document,ID),称为控件ID。当用户在界面中的某一控件中输入内容时,应用程序根据控件ID,调用相应的模块将用户输入的内容显示于该控件中。
需要说明的是,本申请实施例中关于应用程序(或应用程序中的模块)对于某步骤的执行或对于某一功能的实现,具体可以通过该应用程序的进程或线程执行和实现,以下实施例中不再赘述。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
基于图2实施例所示的软件架构,示例性的,图3为本申请实施例提供的一例应用程序异常退出的处理方法所适用的软件架构的示意图。
如图3所示,本实施例中,应用程序层可以包括桌面启动器(launcher),launcher用于在电子设备的桌面上展示***中所有可以打开的应用程序的图标,监听用户对桌面中应用程序图标的操作并通知AMS。
另外,本实施例中,需要实现异常界面恢复的应用程序可以包括数据保存模块、数据恢复模块和依赖配置文件。图3中以应用程序A为例进行说明。
其中,数据保存模块用于保存界面中的用户输入数据。用户输入数据包括但不限于用户在界面中输入的内容以及用户在界面中输入的内容的输入位置。可选的,输入位置可以通过用户输入的内容所在的控件ID来表示。
依赖配置文件用于保存应用程序中界面对应的依赖界面的跳转信息。某一界面的依赖界面是指用于用户输入目标信息以生成该界面的依赖信息的界面。某一界面的依赖信息是指启动该界面所必需的信息。例如,对于某一界面A,需要存在信息B才能启动该界面A,而信息B的生成,可以由用户在界面C中输入对应的目标信息,根据用户输入的目标信息生成信息B。那么,界面C称为界面A的依赖界面,信息B称为界面A的依赖信息。
可选的,依赖信息包括但不限于鉴权成功信息(也称为身份校验成功信息等)和用户授权信息。
鉴权成功信息用于表征用户的身份信息符合预设的权限校验规则。鉴权成功信息例如可以包括表征账号密码匹配的信息,或者,表征账号和验证码匹配的信息等。例如,一些应用程序的一些界面,需要通过用户账号和密码进行鉴权,鉴权成功后才能显示这些界面。则要显示这些界面,需要先获取用户的账号和密码,并对账号和密码进行验证。若账号和密码匹配,鉴权成功,生成鉴权成功信息。只有获取到鉴权成功信息后才能跳转至这些界面。其中,用户账号和密码可以从预设的存储位置获取,也可以由用户在登录界面输入,登录界面即为这些界面的依赖界面。在一个具体的实施例中,鉴权成功信息可以为预设的鉴权码。
用户授权信息用于表征征得用户同意或许可,对预设操作具有执行权限。用户授权信息例如可以包括表征用户同意某些协议、规定或通知等的信息。例如,一些应用程序的一些界面,需要用户确认同意预设协议才能显示这些界面。则要显示这些界面,需要先获取用户意见信息,若用户意见信息为同意授权,则生成用户授权信息。只有获取到用户授权信息后才能跳转至这些界面。其中,用户意见信息是指表征用户是否同意授权的信息。用户意见信息可以从预设的存储位置获取,也可以由用户在权限申请界面中输入,权限申请界面即为这些界面的依赖界面。若用户在权限申请界面输入同意授权(例如用户在权限申请界面点击“同意”控件),则生成用户授权信息。在一个具体的实施例中,用户授权信息可以为预设的授权码。
当然,根据需要,依赖信息也可以为其他的信息,本申请实施例对此不做任何限定。
可选的,应用程序的依赖配置文件中可以包括该应用程序中界面的跳转信息、依赖界面的跳转信息以及界面与依赖界面的对应关系等。依赖界面的跳转信息包括依赖界面对应的Activity的名称、Activity的标签等。某一应用程序的依赖配置文件例如可以为Android***中该应用程序的应用清单(Manifest.xml),Manifest.xml可以存储于该应用程序的根目录下。
数据恢复模块用于根据用户输入数据对界面中用户输入的内容进行恢复显示。
如图3所示,本实施例中,应用程序框架层可以提供有数据保存接口和数据恢复接口。应用程序框架层可以包括AMS、异常检测模块、历史运行情况确定模块和依赖信息生成模块。
数据保存接口用于与应用程序中的数据保存模块对接。数据恢复接口用于与应用程序层中的数据恢复模块对接。
异常检测模块用于检测应用程序运行过程中的异常,确定应用程序的异常信息,并在退出应用程序之前调用数据保存接口,通过数据保存模块保存异常界面中的用户输入数据。上述异常是指会导致应用程序退出的异常。异常信息包括但不限于发生异常的应用程序的信息、异常界面的跳转信息、发生异常的时间和异常类型等。
历史运行情况确定模块用于根据异常检测模块的检测结果确定应用程序在上一次运行过程中是否发生异常退出,并将确定出的结果通知至AMS。具体的,历史运行情况确定模块根据异常检测模块确定的异常信息,确定是否存在应用程序上一次运行过程中的异常信息;若存在,则确定该应用程序上一次运行过程中发生异常退出,否则确定应用程序上一次运行过程中未发生异常退出。在该应用程序上一次发生异常退出的情况下,历史运行情况确定模块将异常界面的跳转信息发送至AMS。
AMS用于在接收到对应用程序的启动指令的情况下,根据历史运行情况确定模块确定出的结果创建Activity,以显示对应的界面。具体的,若应用程序在上一次运行过程中未发生异常退出,则AMS启动预设启动界面,其中,预设启动界面为预先设置的启动该应用程序时的默认界面;若该应用程序上一次运行过程中发生异常退出,则AMS根据异常界面的跳转信息跳转至异常界面,并调用数据恢复接口,通过数据恢复模块对异常界面中用户输入数据进行恢复显示。
另外,在对异常界面恢复过程中,AMS具体用于根据异常界面的跳转信息向异常界面跳转,并确定是否跳转成功;若跳转失败,则从依赖配置文件中获取异常界面的依赖界面的跳转信息,并跳转至依赖界面。
如上所述,依赖界面用于用户输入信息以生成依赖信息。依赖信息生成模块用于根据用户通过依赖界面输入的信息,或者根据从预设存储位置获取的信息生成依赖信息。根据依赖信息的不同,依赖信息生成模块例如可以为鉴权模块,具体用于根据用户输入的信息进行权限校验,若权限校验通过,则生成鉴权成功信息;或者,依赖信息生成模块可以为授权模块,具体用于根据用户输入的信息确定用户是否同意授权,若用户同意授权,则生成用户授权信息。
为了便于描述且为了体现应用程序与操作***之间的交互,下述实施例中,将应用程序层描述为应用侧,将应用程序层以下的各层(即应用程序框架层、***库和内核层等)概括描述为***侧。
下面将以具有图1和图3所示结构的电子设备为例,结合附图和应用场景,对本申请实施例提供的应用程序异常退出的处理方法进行具体阐述。
可以理解,应用程序使用过程中可以包括以下几种应用场景:1)首次启动应用程序;2)应用程序异常退出;3)应用程序再启动。以下实施例以应用程序A为例,结合图4对上述三种应用场景下本申请提供的应用程序异常退出的处理方法进行说明。
1)首次启动应用程序A
本申请实施例提供的方法在首次启动应用程序A的场景下,显示应用程序A的预设启动界面a。
示例性的,图4是本申请实施例提供的一例应用程序异常退出的处理方法的流程示意图。如图4所示,该方法包括:
S401、用户点击桌面的应用程序A的图标。
其中,应用程序A包括数据保存模块、数据恢复模块和依赖配置文件。参见图5,图5为本申请一个实施例提供的应用程序异常退出的处理方法对应的界面变化示意图。以电子设备为手机,应用程序A为备忘录为例,如图5中的(a)图所示,手机桌面显示有多个应用程序的图标,用户点击备忘录的应用图标。
S402、应用侧的launcher响应于用户的点击操作,通知***侧的AMS启动应用程序A的界面。
可选的,launcher可以向AMS发送Activity启动消息,该Activity启动消息中携带有应用程序A的信息,例如,应用程序A的名称或应用程序A的其他身份标识。参见图5,以应用程序A为备忘录来说,当用户点击桌面的备忘录的图标,launcher响应于用户的点击,向AMS发送Activity启动消息,该Activity启动消息中携带有备忘录的信息。
S403、***侧的AMS接收到应用侧的launcher的通知,通知历史运行情况确定模块确定应用程序A上一次运行过程中是否发生异常退出。
可选的,AMS可以向历史运行情况确定模块发送运行情况查询消息,运行情况查询消息中可以携带有应用程序A的信息,例如应用程序A的名称或其他身份标识。运行情况查询消息用于指示历史运行情况确定模块确定应用程序A上一次运行过程中是否发生异常退出。
S404、***侧的历史运行情况确定模块接收到AMS的通知,从异常检测模块中获取应用程序A上一次运行过程中的异常信息。
作为一种可能的实现方式,历史运行情况确定模块可以向异常检测模块发送应用异常查询消息,应用异常查询消息中可以携带有应用程序A的信息。异常检测模块响应于应用异常查询消息,查询应用程序A的异常信息,并将查询结果返回至历史运行情况确定模块。可以理解,若应用程序A运行过程中发生过异常,异常检测模块能够查询到应用程序A的异常信息,则异常检测模块将应用程序A的异常信息发送至历史运行情况确定模块;若应用程序A运行过程中未发生过异常,异常检测模块查询不到应用程序A的异常信息,则异常检测模块可以向历史运行情况确定模块反馈空消息,或者发送其他预设的表征无应用程序A的异常信息的消息,或者,不向历史运行情况确定模块反馈消息。本申请实施例对此不做限定,可以根据实际需求设计。异常检测模块检测异常的具体方法在后续实施例中进行说明。
可以理解,应用程序A运行一段时间,可能未发生过异常,可能发生过一次异常,也可能发生过多次异常。每发生一次异常,异常检测模块确定出的信息称为一组异常信息。在一个实施例中,异常检测模块可以对检测到的应用程序A的每一组异常信息进行保存,即异常检测模块可以保存有应用程序A的多组异常信息。在这种情况下,可选的,可以由异常检测模块确定多组异常信息中是否存在应用程序A上一次运行过程中的异常信息,并将确定的结果发送至历史运行情况确定模块。可选的,异常检测模块也可以将应用程序A所有的异常信息发送至历史运行情况确定模块,由历史运行情况确定模块确定多组异常信息中是否存在上一次运行过程中的异常信息。具体的,历史运行情况确定模块可以根据应用程序A所有的异常信息,结合应用程序A上一次运行过程中各个Activity的创建时间、Activity的销毁时间等,确定是否存在上一次运行过程中的异常信息。
在另一个实施例中,异常检测模块也可以在满足预设要求(例如,完成异常界面恢复)的情况下,删除应用程序A的所有异常信息,使得在应用程序A发生异常之后,对异常界面完成恢复之前,异常检测模块仅保存应用程序A的一组异常信息,即为应用程序A上一次运行过程中的异常信息。如此,异常检测模块在从异常检测模块中获取应用程序A的异常信息时,若存在应用程序A的异常信息,则说明应用程序A上一次运行过程中发生异常;若不存在应用程序A的异常信息,则说明应用程序A上一次运行过程中未发生异常。也就是说,异常检测模块中仅保存有应用程序A上一次运行过程中的异常信息,这样便于历史运行情况确定模块确定应用程序A的运行情况,提高算法运行效率。
S405、***侧的历史运行情况确定模块根据对应用程序A的异常信息的获取结果确定应用程序A上一次运行过程中是否发生异常退出。
若历史运行情况确定模块从异常检测模块中获取到应用程序A上一次运行过程中的异常信息,则确定应用程序A上一次运行过程中发生异常退出;若历史运行情况确定模块从异常检测模块中未获取到应用程序A上一次运行过程中的异常信息,则确定应用程序A上一次运行过程中未发生异常退出。
本实施例的应用场景为首次启动应用程序A,因而,历史运行情况确定模块从异常检测模块中未获取到应用程序A上一次运行过程中的异常信息,历史运行情况确定模块确定上一次运行过程中未发生异常退出,执行步骤S406至S407。
S406、***侧的历史运行情况确定模块将确定出的结果(应用程序A上一次运行过程中未发生异常退出)发送至AMS。
S407、***侧的AMS启动预设启动界面a。
具体的,AMS启动第一预设Activity,以启动预设启动界面a。第一预设Activity是指应用程序A的预设启动界面a对应的Activity。可选的,AMS中可以在应用程序A的根目录中查询预设启动界面a的跳转信息,确定第一预设Activity的信息,根据第一Activity的信息创建第一预设Activity,以显示预设启动界面a。
随后,用户对应用程序A进行操作,应用侧的应用程序A和***侧的相关模块响应于用户的操作,实现应用程序A的相关功能。
请继续参见图5,在图5中(a)图所示的操作为对备忘录的首次启动的情况下,手机显示备忘录的预设启动界面(笔记界面),如图5中的(b)图所示。假设用户在图5中的(b)图中点击笔记界面中的新建控件501,并在新建的笔记文本框中输入了一些文字,界面显示如图5中的(c)图所示。
2)应用程序A异常退出
请继续参见图5,假设在手机所展示的界面为图5中的(c)图所示的界面时,备忘录发生了异常退出。传统技术中的方案,应用异常退出后,无法将界面恢复至用户正在操作的界面,也无法保存用户的输入数据,因而无法恢复用户在界面中输入的内容,用户体验较差。本申请实施例提供的方法对应用程序A进行实时检测,在应用程序A发生异常时,调用数据保存接口保存用户输入数据,以便于后续对异常界面中用户输入的内容进行恢复,提高用户体验。
请继续参见图4,本实施例中,应用程序异常退出的处理方法可以包括:
S408、应用程序A运行过程中,***侧的异常检测模块实时检测应用程序A发生的异常,并确定异常信息。
可选的,异常检测模块可以通过监听应用程序A运行过程中的预设异常信号来检测异常。若应用程序A在运行过程中出现预设异常信号,则确定应用程序A出现异常。预设异常信号用于表征应用程序出现异常,且该异常会导致应用程序退出。在一个具体的实施例中,预设异常信号可以包括SIGKILL信号、SIGHUP信号、ANR信号中的至少一种。其中,SIGKILL信号也即kill信号,为杀死进程的信号。SIGHUP信号也称为进程挂起信号,为表征终端挂断或进程死亡的信号。ANR信号用于表征当前应用程序无响应或响应超时。当然,以上几种信号仅为举例,并不造成对本申请实施例提供的方法的任何限定。
异常检测模块在检测到应用程序发生异常时,确定异常信息,即确定发生异常的应用程序、异常界面的跳转信息、发生异常的时间以及异常类型等信息中的一种或多种。可以理解,根据需要,异常检测模块可以用于检测多个应用程序运行过程中的异常,确定多个应用程序的异常信息。可选的,异常检测模块可以将各个应用程序的异常信息以表格、矩阵等形式进行保存。
S409、***侧的异常检测模块检测到应用程序A发生异常后,通过调用数据保存接口请求数据保存模块的服务。
换句话说,***侧的异常检测模块检测到应用程序A发生异常后,调用数据保存接口,以使数据保存模块提供数据保存服务。
可选的,数据保存接口可以采用异步接口。异常检测模块检测到异常后,***侧在应用程序A的进程中新建数据保存线程,并将数据保存线程的优先级设置为最高优先级。数据保存线程用于应用程序A的数据保存模块对异常界面中的用户输入数据进行保存。在数据保存模块完成保存之后,***侧销毁该数据保存线程。
该实现方式中,数据保存接口采用异步接口,且将数据保存模块执行的优先级设置为最高优先级,这样能够在异常检测模块检测到应用程序A异常后,抢占CPU,对应用程序A的运行进行短暂拦截,防止应用程序A的立即退出,从而能够及时保存异常界面中的用户输入数据,便于后续对异常界面中用户输入的内容进行恢复。而且,将数据保存线程优先级设置为最高优先级,还能够防止应用程序A因ANR导致数据保存模块无法执行功能等情况,进一步保证了对用户输入数据保存的及时性和可靠性,从而便于后续对异常界面中用户输入的内容进行恢复。
在一个具体的实施例中,数据保存接口的函数例如可以为onExit()。在异常检测模块检测到应用程序A发生异常后,回调onExit()。
S410、应用侧应用程序A的数据保存模块保存异常界面中的用户输入数据。
应用程序A的数据保存模块与数据保存接口对接,当异常检测模块调用数据保存接口时,数据保存模块响应于调用,基于数据保存线程对异常界面中的用户输入数据进行保存。也即是说,应用侧应用程序A的数据保存模块执行数据保存接口,以数据保存接口的函数为onExit()为例来说,即数据保存模块执行onExit()回调接口。
可选的,数据保存模块可以对异常界面中的用户输入数据进行持久化保存,例如将用户输入数据保存至硬盘中,使得应用程序A重新启动后或电子设备重新启动后可以继续访问保存的用户输入数据,提高数据保存的可靠性,进而提高异常界面恢复的可靠性。
S411、***侧的AMS退出应用程序A的界面。
完成对用户输入数据的保存后,***侧销毁上述数据保存线程。由于发生异常,AMS销毁异常界面对应的Activity,应用程序A退出。
继续以图5中所示的备忘录为例,在手机所展示的界面为图5中的(c)图所示的界面,异常检测模块检测到异常,确定异常信息,并调用数据保存接口,通过应用程序A的数据保存模块对图5中的(c)图所示界面的用户输入数据进行保存。完成保存后,备忘录退出,手机回到桌面界面,如图5中的(d)图所示。
本实施例提供的应用程序异常退出的处理方法,通过异常检测模块检测应用程序发生的异常,在应用程序发生异常的情况下,获取异常信息,并能够调用数据保存接口,通过数据保存模块对异常界面中的用户输入数据进行保存,从而便于后续再启动应用程序时对异常界面以及异常界面中的用户输入的内容进行恢复,无需用户重复对界面跳转的操作,且无需用户重复输入内容,保证了用户操作的连续性,降低用户操作复杂度,提高用户体验。
另外,可以理解,操作***相较于应用程序,便于监测应用程序运行过程中的各种状态;而由于用户对应用程序操作复杂,随机性强,且应用程序多具有数据保护机制等原因,应用程序相较于操作***,便于获取用户输入数据。本实施例提供的方法中,异常检测模块设置于***侧,数据保存模块设置于应用侧,也就是说,由操作***检测应用程序的异常,由应用程序保存数据,通过混合架构实现了应用异常检测和用户输入数据的保存。这样,既利用了操作***便于监测应用程序运行状态的优势,又利用了应用程序便于获取用户输入数据的优势,二者相互配合,提高了应用程序异常检测和数据保存的便利性和灵活性,进而提高对应用程序异常退出处理的效率,也减小了操作***的执行压力。而且,通过应用程序保存用户输入数据,用户在界面中的输入信息不会***作***获取,保证了用户输入数据的安全性。除此之外,操作***的应用程序架构层提供数据保存接口,应用程序根据提供的接口适配对应的数据保存模块即可实现对应用程序异常的检测和对用户输入数据的保存,这样使得操作***能够适配和对接更多应用程序,保证了操作***的开放性,且保证了应用程序设计的灵活性。
3)应用程序A再启动
参照图5,用户发现备忘录退出后,点击图5中的(d)图中的备忘录图标,对备忘录进行重新启动。这种情况下,本实施例提供的方法对上一次异常退出时的异常界面进行恢复显示,使得界面还原到退出前的界面,如图5中的(e)图所示。图中可以看出,异常界面恢复后,手机所展示的界面为备忘录退出前用户正在操作的界面,而且界面中还原了用户输入的所有信息,这样,无需用户操作即可恢复界面,且无需用户重新输入文字,保证了用户操作的连续性,提高了用户体验。
示例性的,图6为本申请一个实施例提供的应用程序再启动场景下,应用程序异常退出的处理方法的流程示意图,如图6所示,该方法包括:
S601、用户再次点击桌面的应用程序A的图标。
S602、应用侧的launcher响应于用户的点击操作,通知***侧的AMS启动应用程序A的界面。
S603、***侧的AMS接收到应用侧的launcher的通知,通知历史运行情况确定模块确定应用程序A上一次运行过程中是否发生异常退出。
S604、***侧的历史运行情况确定模块接收到AMS的通知,从异常检测模块中获取应用程序A上一次运行过程中的异常信息。
S605、***侧的历史运行情况确定模块根据对应用程序A的异常信息的获取结果确定应用程序A上一次运行过程中是否发生异常退出。
上述步骤S601至S605的具体执行过程与图4所示实施例中步骤S401至S405相同,不再赘述。
若应用程序A上一次运行过程中未发生异常退出,则***侧的历史运行情况确定模块将确定出的结果(上一次运行过程中未发生异常退出)发送至AMS,***侧的AMS启动第一预设启动界面a。具体的参见图4所示实施例中步骤S406和S407,不再赘述。
本实施例中,以应用程序A上一次运行过程中发生异常退出为例进行说明。***侧的历史运行情况确定模块确定应用程序A上一次运行过程中发生异常退出,执行步骤S606至S610。
S606、***侧的历史运行情况确定模块将确定出的结果(上一次运行过程中发生异常退出)和异常界面的跳转信息发送至AMS。
S607、***侧的AMS根据异常界面的跳转信息跳转至异常界面。
具体的,***侧的AMS根据异常界面对应的Activity的信息启动对应的Activity。
S608、***侧的AMS通过数据恢复接口向数据恢复模块请求服务。
换句话说,***侧的AMS调用数据恢复接口,以使数据恢复模块提供数据恢复服务。
在一个具体的实施例中,数据恢复接口的函数例如可以为onRestore()。AMS回调onRestore()。
S609、应用侧应用程序A的数据恢复模块从数据保存模块获取异常界面中的用户输入数据。
数据恢复模块与数据恢复接口对接,当AMS调用数据恢复模块时,数据恢复模块响应于调用,获取异常界面中的用户输入数据。也就是说,应用侧应用程序A的数据恢复模块执行数据恢复接口,对异常界面中用户输入的内容进行恢复。以数据恢复接口为onRestore()为例,数据恢复模块执行onRestore()回调接口,以对异常界面中用户输入的内容进行恢复显示。
可选的,数据恢复模块可以根据数据保存模块保存用户输入数据的路径,预先设置数据恢复模块获取用户输入数据的路径,数据恢复模块根据该路径获取异常界面中的用户输入数据。
S610、应用侧应用程序A的数据恢复模块根据用户输入数据对异常界面中用户输入的内容进行恢复。
具体的,数据恢复模块根据用户输入数据中的输入位置,将用户输入的内容显示于该输入位置,以实现对用户输入的内容的恢复显示。
本实施例提供的应用程序异常退出的处理方法,在用户启动应用程序时,通过历史运行情况确定模块确定应用程序的历史运行情况,在应用程序上一次运行过程中发生异常退出的情况下,根据异常信息中的异常界面的跳转信息跳转至异常界面,并通过数据恢复模块对异常界面中用户输入的内容进行恢复。如此,无需用户重复对界面跳转的操作,且无需用户重复输入内容,保证了用户操作的连续性,降低用户操作复杂度,提高用户体验。
另外,可以理解,操作***相较于目标应用程序,便于进行界面跳转;而由于用户对应用程序操作复杂,随机性强,且目标应用程序多具有数据保护机制等原因,目标应用程序相较于操作***,便于获取和显示用户输入数据。本实施例提供的方法中,历史运行情况确定模块设置于***侧,数据恢复模块设置于应用侧,也就是说,由操作***根据应用程序的历史运行情况跳转界面,由应用程序根据数据保存模块保存的数据对异常界面中的用户的输入内容进行恢复,通过混合架构实现了对异常界面的恢复。这样,既利用了操作***便于进行界面跳转的优势,又利用了应用程序便于获取和显示用户输入数据的优势,二者相互配合,提高了对应用程序的异常界面恢复的便利性和灵活性,进而提高对应用程序异常退出处理的效率,也减小了操作***的执行压力。而且,通过应用程序恢复用户输入的内容,使得用户在界面中输入的内容不会***作***获取,保证了用户输入数据的安全性。除此之外,操作***的应用程序架构层提供数据恢复接口,应用程序根据提供的接口适配对应的数据恢复模块即可实现对异常界面的恢复,这样使得操作***能够适配和对接更多应用程序,保证了操作***的开放性,且保证了应用程序设计的灵活性。
在一个实施例中,步骤S610之后,该方法还包括:
S611、***侧的AMS确定异常界面完成恢复时,通知异常检测模块删除应用程序A的异常信息。
S612、***侧的异常检测模块删除应用程序A的异常信息。
该实现方式中,AMS确定完成对异常界面的恢复的情况下,通知异常检测模块将应用程序的异常信息删除,这样便于异常检测模块在应用程序后续发生异常时存储异常信息,使得异常检测模块在应用程序无异常发生时无异常信息,在应用程序有异常信息时该信息为上一次发生异常的异常信息,如此便于历史运行情况确定模块确定应用程序的历史运行情况,从而便于进行界面恢复,提高算法运行效率。
在一些实施例中,还存在一种应用场景,在对异常界面进行跳转和恢复时,需要依赖由另外一些界面输入的信息生成的依赖信息,也即,待恢复的异常界面存在依赖界面。以下根据依赖信息的不同,列举几种待恢复的异常界面存在依赖界面的例子,仅作为示例,不对本申请造成任何限定。
1)依赖信息为鉴权成功信息
一些应用程序的一些界面,需要获取到鉴权成功信息后才能实现跳转。例如,某些应用程序中,需要用户在账号登录界面进行账号登录后才能跳转到预设界面,展示相应的界面。一般的,用户可以设置记住账号和密码,则应用程序可以将用户的账号和密码保存于预设存储位置。当需要启动预设界面时,首先从预设存储位置获取账号密码,并对账号和密码进行验证,验证通过后,生成鉴权成功信息(即依赖信息)。AMS获取到鉴权成功信息后才能启动预设界面。
但是,为了保障用户账号的安全性,一些应用程序会对账号和密码设置有效期限,当超过有效期限时,需要用户重新输入账号和密码。或者,当用户在其他设备上登录了该账号,则当前电子设备中应用程序保存的账号和密码无效,需要用户重新输入账号和密码。在这些情况下,采用本申请实施例提供的方法对预设界面进行恢复时,由于保存的账号密码超过有效期限或者无效,账号和密码验证不通过,因而无法获取鉴权成功信息,因而出现无法跳转到预设界面的情况,需要先跳转至依赖界面获取信息,生成依赖信息,以解除依赖。
若微信上次运行过程中在图7中(a)图所示的界面产生异常并退出,则通过本申请实施例提供的方法对该界面进行恢复时,需要获取用户的账号和密码。在恢复过程中,若保存的账号和密码超过有效期限,账号和密码验证不通过,无法获取鉴权成功信息,因而无法跳转到图7中的(a)图对应的微信主界面,需要先跳转至图7中的(b)图所示的账号登录界面。用户在图7中的(b)图所示的界面中输入账号密码,鉴权成功后,进一步跳转至图7中的(a)图所示的界面。
2)依赖信息为用户授权信息
一些应用程序的一些界面,需要获取到用户授权信息后才能实现跳转。例如,某些应用程序中,需要用户在权限申请界面中点击同意控件后才能跳转到预设界面,展示相应的界面。在这种情况下,采用本申请实施例提供的方法在对预设界面进行恢复的过程中,需要先由权限申请界面向用户申请权限,权限申请成功后,生成用户授权信息。AMS获取到用户授权信息后才跳转到预设界面。
示例性的,图8为本申请实施例提供的另一例待恢复的异常界面与依赖界面的示意图。以某医院的挂号***为例,图8中的(a)图为就诊卡选择界面的示意图,图8中的(b)图为挂号须知界面的示意图。若该应用程序上次运行过程中在图8中(a)图所示的界面产生异常并退出,则通过本申请实施例提供的方法对该界面进行恢复时,需要先跳转至图8中的(b)图所示的界面,向用户申请权限。若用户在图8中的(b)图所示的界面中点击“我已阅读并同意”,则权限申请成功,生成用户授权信息,AMS跳转到图8中(a)图所示的就诊卡选择界面。
针对待恢复的异常界面存在依赖界面的情况,本申请实施例具体可以通过以下方式实现异常界面恢复:
可选的,可以为存在依赖界面的界面配置依赖界面的跳转信息。作为一种可能的实现方式,依赖界面的跳转信息可以被配置在应用侧应用程序中的依赖配置文件中,例如AndroidManifest.xml中。可选的,依赖界面的跳转信息例如可以为依赖界面的Activity名称或Activity标签等。
示例性的,图9为本申请实施例提供的另一例应用程序异常退出的处理方法的流程示意图。如图9所示,以异常界面b1存在依赖界面b2为例,上述S607、***侧的AMS根据异常界面的跳转信息跳转至异常界面,包括:
S901、***侧的AMS根据异常界面b1的跳转信息向异常界面b1跳转,并确定是否跳转成功。
具体的,AMS根据异常界面b1对应的Activity的信息,跳转至对应的Activity。
可选的,对于存在依赖界面的异常界面,先获取异常界面的依赖信息。获取到依赖信息后,再跳转至异常界面。可以理解,跳转至异常界面的结果可能为跳转成功,也可能为跳转失败。例如上述实施例所述,在账号密码超过有效期限、账号密码无效,或者无法获取到用户授权信息等情况下,会出现跳转失败。
若跳转成功,则继续执行图6所示实施例中的S609和S610,恢复对异常界面中用户输入的内容的显示,从而完成异常界面b1的恢复;若跳转失败,则执行步骤S902至S907,之后继续执行图6所示实施例中的S609和S610,恢复对异常界面中用户输入的内容的显示,从而完成异常界面b1的恢复。
可选的,界面跳转的结果可以通过预设的跳转结果代码表征。
S902、***侧的AMS从依赖配置文件中获取异常界面b1的依赖界面b2的跳转信息。
如上实施例所示,依赖配置文件可以存储于应用程序的根目录下。当异常界面跳转失败,则AMS根据异常界面的跳转信息,从应用程序的根目录下的依赖配置文件中获取与异常界面的跳转信息对应的依赖界面的跳转信息。
S903、***侧的AMS根据取依赖界面b2的跳转信息,跳转至依赖界面b2。
在一个具体的实施例中,可以在异常界面的Activity中增加依赖标签,依赖标签用于标记异常界面的依赖界面的跳转信息。
可选的,上述过程的程序可以如下:
<activity
android:name=“.MainActivity”
android:label=“MainActivity”
android:depend=“.TargetActivity”
android:theme=“@style/Theme.Testtleak.NoActionBar”>
</activity>
其中,android:depend为Activity的依赖标签,.TargetActivity为MainActivity的依赖界面。当待恢复的异常界面为MainActivity,且直接恢复跳转到MainActivity无法显示(或出错)时,可以根据依赖标签跳转到.TargetActivity。
S904、***侧的依赖信息生成模块获取用户通过依赖界面b2输入的信息。
S905、***侧的依赖信息生成模块根据用户在依赖界面b2输入的信息,生成异常界面b1的依赖信息。
S906、***侧的依赖信息生成模块将依赖信息发送至AMS。
S907、***侧的AMS根据异常界面b1的依赖信息以及异常界面b1的跳转信息,启动异常界面b1。
示例性的,图10为本申请实施例提供的一例具有依赖界面的异常界面恢复过程中的界面变化示意图。以微信为例,图10中的(a)图为异常界面的示意图。当用户在图10中的(a)图所示的对话框中输入图中所示文字时,微信崩溃闪退。则在界面恢复过程中,由于该界面的显示依赖登录界面中的账号和密码,且账号密码过期,因而先跳转至图10中的(b)图所示的依赖界面。当用户在图10中的(b)图所示的界面中输入账号和密码,并点击“同意并验证”控件后,跳转至待恢复界面,并显示异常界面以及用户输入数据,如图10中的(c)图所示。
上述过程可以看出,本实施例提供的方法,通过将界面和对应的依赖界面的跳转信息保存于依赖配置文件,在异常界面无法跳转的情况下,首先跳转至异常界面的依赖,通过依赖界面获取相关的信息生成依赖信息,解除依赖,再跳转至异常界面。这样,使得对异常界面进行恢复时,即使存在依赖界面,也能够实现恢复,提高本方法的适用性和实用性。
以下结合上述实施例对本申请实施例提供的应用程序异常退出的处理方法进行进一步阐述。示例性的,图11为本申请实施例提供的又一例应用程序异常退出的处理方法的流程示意图。本实施例中,具有异常界面恢复功能的应用程序称为目标应用程序,且本实施例中,各个步骤的执行主体参见上述实施例,不再赘述。如图11所示,该方法包括:
S1101、在目标应用程序运行过程中,检测目标应用程序发生的异常,并生成异常信息,异常信息包括异常界面的跳转信息。
S1102、在目标应用程序退出之前,保存用户输入数据。
S1103、目标应用程序退出。
S1104、响应于对目标应用程序的再启动操作,确定目标应用程序上一次运行过程中是否发生异常退出;若目标应用程序上一次运行过程中发生异常退出,则执行步骤S1105;若目标应用程序上一次运行过程中未发生异常退出,则执行步骤S1114。
S1105、获取异常界面的跳转信息和异常界面中的用户输入数据;异常界面是指目标应用程序上一次发生异常退出时所在的界面,用户输入数据包括用户在异常界面中的输入内容和输入内容在异常界面中的输入位置。
S1106、根据异常界面的跳转信息,启动异常界面。
S1107、确定异常界面是否启动成功;若异常界面启动失败,则执行步骤S1108;若异常界面启动成功,则执行步骤S1112。
S1108、获取异常界面的依赖界面的跳转信息;异常界面的依赖界面是指用于输入第一信息的界面,第一信息用于生成启动异常界面所必需的第一依赖信息。
可选的,异常界面的依赖信息可以从依赖配置文件中获取。依赖配置文件用于存储目标界面的依赖界面的跳转信息。目标界面是指目标应用程序中存在依赖界面的界面。目标界面的依赖界面是指用于输入目标信息的界面。目标信息用于生成启动目标界面所必需的依赖信息。
也就是说,依赖配置文件中可以保存有至少一个目标界面的依赖界面的跳转信息。至少一个目标界面中包括异常界面。异常界面的依赖界面中输入的目标信息称为第一信息,异常界面的依赖信息称为第一依赖信息。
在一个实施例中,第一依赖信息包括鉴权成功信息和用户授权信息中的至少一种,鉴权成功信息用于表征用户的身份信息符合预设的权限校验规则,用户授权信息用于表征征得用户同意或许可,对预设操作具有执行权限。
S1109、根据异常界面的依赖界面的跳转信息启动异常界面的依赖界面。
S1110、获取用户通过异常界面的依赖界面输入的第一信息,并根据第一信息生成第一依赖信息。
S1111、根据第一依赖信息和异常界面的跳转信息,跳转至异常界面。
S1112、根据用户输入数据,在异常界面中的输入位置恢复输入内容。
S1113、删除目标应用程序的异常信息。
S1114、启动目标应用程序的预设启动界面。
在一个实施例中,步骤S1102、在目标应用程序退出之前,保存用户输入数据,包括:新建数据保存线程,并将数据保存线程的优先级设为最高优先级;基于数据保存线程保存用户输入数据。
在一个实施例中,步骤S1101中检测目标应用程序发生的异常,包括:
监听目标应用程序的预设异常信号,预设异常信号用于表征应用程序出现会导致应用程序退出的异常。
在一个实施例中,预设异常信号包括杀死进程(SIGKILL)信号、进程挂起(SIGHUP)信号和应用无响应(ANR)信号中的至少一种。
在一个实施例中,步骤S1104中确定目标应用程序上一次运行过程中是否发生异常退出,包括:确定是否存在目标应用程序上一次运行过程中的异常信息;若存在,则确定目标应用程序上一次运行过程中发生异常;若不存在,则确定目标应用程序上一次运行过程中未发生异常。
本实施例中各步骤的具体实现过程及有益效果等参见上述实施例,不再赘述。
上文详细介绍了本申请实施例提供的应用程序异常退出的处理方法的示例。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,例如检测单元、处理单元、显示单元等,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述应用程序异常退出的处理方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备还可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他电子设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图1所示结构的设备。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行上述任一实施例的应用程序异常退出的处理方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的应用程序异常退出的处理方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的应用程序异常退出的处理方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (22)
1.一种应用程序异常退出的处理方法,所述方法由电子设备执行,其特征在于,所述电子设备安装有目标应用程序,所述方法包括:
响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出;
若所述目标应用程序上一次运行过程中发生异常退出,则获取异常界面的跳转信息和所述异常界面中的用户输入数据;所述异常界面是指所述目标应用程序上一次发生异常退出时所在的界面,所述用户输入数据包括用户在所述异常界面中的输入内容和所述输入内容在所述异常界面中的输入位置;
根据所述异常界面的跳转信息,恢复所述异常界面;
根据所述用户输入数据,在所述异常界面中的所述输入位置恢复所述输入内容。
2.根据权利要求1所述的方法,其特征在于,所述根据所述异常界面的跳转信息,恢复所述异常界面,包括:
根据所述异常界面的跳转信息,启动所述异常界面;
若所述异常界面启动失败,则获取所述异常界面的依赖界面的跳转信息;所述异常界面的依赖界面是指用于输入第一信息的界面,所述第一信息用于生成启动所述异常界面所必需的第一依赖信息;
根据所述异常界面的依赖界面的跳转信息,启动所述异常界面的依赖界面;
获取用户通过所述异常界面的依赖界面输入的所述第一信息,并根据所述第一信息生成所述第一依赖信息;
根据所述第一依赖信息和所述异常界面的跳转信息,启动所述异常界面。
3.根据权利要求2所述的方法,其特征在于,所述第一依赖信息包括鉴权成功信息和用户授权信息中的至少一种,所述鉴权成功信息用于表征用户的身份信息符合预设的权限校验规则,所述用户授权信息用于表征对预设操作具有执行权限。
4.根据权利要求1所述的方法,其特征在于,所述响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出之前,所述方法还包括:
在所述目标应用程序运行过程中,检测所述目标应用程序发生的异常,并生成异常信息,所述异常信息包括所述异常界面的跳转信息;
在所述目标应用程序退出之前,保存所述用户输入数据。
5.根据权利要求4所述的方法,其特征在于,所述在所述目标应用程序退出之前,保存所述用户输入数据,包括:
新建数据保存线程,并将所述数据保存线程的优先级设为最高优先级;
基于所述数据保存线程保存所述用户输入数据。
6.根据权利要求4所述的方法,其特征在于,所述检测所述目标应用程序发生的异常,包括:
监听所述目标应用程序的预设异常信号,所述预设异常信号用于表征应用程序出现会导致应用程序退出的异常。
7.根据权利要求6所述的方法,其特征在于,所述预设异常信号包括杀死进程SIGKILL信号、进程挂起SIGHUP信号和应用无响应ANR信号中的至少一种。
8.根据权利要求1所述的方法,其特征在于,所述确定所述目标应用程序上一次运行过程中是否发生异常退出,包括:
确定是否存在所述目标应用程序上一次运行过程中的异常信息;
若存在,则确定所述目标应用程序上一次运行过程中发生异常;
若不存在,则确定所述目标应用程序上一次运行过程中未发生异常。
9.根据权利要求1所述的方法,其特征在于,所述根据所述用户输入数据,在所述异常界面中的所述输入位置恢复所述输入内容之后,所述方法还包括:
删除所述目标应用程序的异常信息。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标应用程序上一次运行过程中未发生异常退出,则启动所述目标应用程序的预设启动界面。
11.根据权利要求1至10中任一项所述的方法,其特征在于,所述电子设备安装有操作***,所述方法包括:
所述操作***响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出,若所述目标应用程序上一次运行过程中发生异常退出,则所述操作***获取所述异常界面的跳转信息,并根据所述异常界面的跳转信息,恢复所述异常界面;
所述目标应用程序获取所述异常界面中的用户输入数据,并根据所述用户输入数据,在所述异常界面中的所述输入位置恢复所述输入内容。
12.根据权利要求11所述的方法,其特征在于,所述操作***包括位于应用程序框架层的历史运行情况确定模块、异常检测模块和活动管理服务,所述操作***响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出,若所述目标应用程序上一次运行过程中发生异常退出,则所述操作***获取异常界面的跳转信息,并根据所述异常界面的跳转信息,恢复所述异常界面,包括:
所述历史运行情况确定模块响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出;
若所述目标应用程序上一次运行过程中发生异常退出,则所述历史运行情况确定模块从所述异常检测模块获取所述异常界面的跳转信息;
所述活动管理服务根据所述异常界面的跳转信息,恢复所述异常界面。
13.根据权利要求12所述的方法,其特征在于,所述目标应用程序包括依赖配置文件,所述依赖配置文件用于存储目标界面的依赖界面的跳转信息,所述目标界面是指所述目标应用程序中存在依赖界面的界面,所述目标界面的依赖界面是指用于输入目标信息的界面,所述目标信息用于生成启动所述目标界面所必需的依赖信息,所述应用程序框架层还包括依赖信息生成模块;
所述活动管理服务根据所述异常界面的跳转信息,恢复所述异常界面,包括:
所述活动管理服务根据所述异常界面的跳转信息,启动所述异常界面;
若所述异常界面启动失败,则所述活动管理服务从所述依赖配置文件中获取所述异常界面的依赖界面的跳转信息,并根据所述异常界面的依赖界面的跳转信息,启动所述异常界面的依赖界面;
所述依赖信息生成模块获取用户通过所述异常界面的依赖界面输入的第一信息,并根据所述第一信息生成第一依赖信息;所述第一信息为所述异常界面的依赖界面对应的目标信息,所述第一依赖信息为启动所述异常界面所必需的依赖信息;
所述活动管理服务根据所述第一依赖信息和所述异常界面的跳转信息,启动所述异常界面。
14.根据权利要求11所述的方法,其特征在于,所述目标应用程序包括数据保存模块和数据恢复模块,所述目标应用程序获取所述异常界面中的用户输入数据,并根据所述用户输入数据,在所述异常界面中的所述输入位置恢复所述输入内容,包括:
所述数据恢复模块从所述数据保存模块中获取所述用户输入数据,并在所述异常界面中的所述输入位置恢复所述输入内容。
15.根据权利要求14所述的方法,其特征在于,所述操作***包括位于应用程序框架层的活动管理服务,所述应用程序框架层还包括数据恢复接口,所述数据恢复接口与所述数据恢复模块对接,所述数据恢复模块从所述数据保存模块中获取所述用户输入数据,并在所述异常界面中的所述输入位置恢复所述输入内容,包括:
所述活动管理服务调用所述数据恢复接口,通过所述数据恢复模块从所述数据保存模块中获取所述用户输入数据,并在所述异常界面中的所述输入位置恢复所述输入内容。
16.根据权利要求11所述的方法,其特征在于,所述操作***包括位于应用程序框架层的异常检测模块,所述目标应用程序包括数据保存模块,所述操作***响应于对所述目标应用程序的启动操作,确定所述目标应用程序上一次运行过程中是否发生异常退出之前,所述方法还包括:
在所述目标应用程序运行过程中,所述异常检测模块检测所述目标应用程序发生的异常,并生成异常信息,所述异常信息包括所述异常界面的跳转信息;
通过所述数据保存模块保存所述用户输入数据。
17.根据权利要求16所述的方法,其特征在于,所述应用程序框架层还包括数据保存接口,所述数据保存接口与所述数据保存模块对接,所述通过所述数据保存模块保存所述用户输入数据,包括:
所述异常检测模块调用所述数据保存接口,通过所述数据保存模块保存所述用户输入数据。
18.根据权利要求17所述的方法,其特征在于,所述数据保存接口为异步接口。
19.根据权利要求11所述的方法,其特征在于,所述操作***包括位于应用程序框架层的异常检测模块,所述根据所述用户输入数据,在所述异常界面中的所述输入位置恢复所述输入内容之后,所述方法还包括:
所述异常检测模块删除所述目标应用程序的异常信息。
20.根据权利要求11所述的方法,其特征在于,所述方法还包括:
若所述目标应用程序上一次运行过程中未发生异常退出,则所述操作***启动所述目标应用程序的预设启动界面。
21.一种电子设备,其特征在于,包括:处理器、存储器和接口;
所述处理器、所述存储器和所述接口相互配合,使得所述电子设备执行如权利要求1至20中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至20中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210355559.0A CN114489917B (zh) | 2022-04-06 | 2022-04-06 | 应用程序异常退出的处理方法、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210355559.0A CN114489917B (zh) | 2022-04-06 | 2022-04-06 | 应用程序异常退出的处理方法、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489917A true CN114489917A (zh) | 2022-05-13 |
CN114489917B CN114489917B (zh) | 2022-09-02 |
Family
ID=81488724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210355559.0A Active CN114489917B (zh) | 2022-04-06 | 2022-04-06 | 应用程序异常退出的处理方法、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489917B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896097A (zh) * | 2022-07-13 | 2022-08-12 | 荣耀终端有限公司 | 一种应用程序无响应处理方法及电子设备 |
CN115129505A (zh) * | 2022-09-02 | 2022-09-30 | 荣耀终端有限公司 | 应用程序异常退出的处理方法及装置 |
CN116208705A (zh) * | 2023-04-24 | 2023-06-02 | 荣耀终端有限公司 | 设备异常恢复方法和电子设备 |
CN117130824A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 一种处理异常的方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313500A1 (en) * | 2008-06-12 | 2009-12-17 | International Business Machines Corporation | Containment and recovery of software exceptions in interacting, replicated-state-machine-based fault-tolerant components |
CN106919489A (zh) * | 2016-08-02 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 应用程序的应用界面异常退出的监测方法及装置 |
CN111221671A (zh) * | 2019-11-27 | 2020-06-02 | 中国银行股份有限公司 | 应用程序异常退出的处理方法及装置 |
CN111459715A (zh) * | 2019-01-20 | 2020-07-28 | 华为技术有限公司 | 应用异常恢复 |
CN111552591A (zh) * | 2020-03-25 | 2020-08-18 | 中国平安财产保险股份有限公司 | 页面异常恢复方法、装置、设备及计算机可读存储介质 |
-
2022
- 2022-04-06 CN CN202210355559.0A patent/CN114489917B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313500A1 (en) * | 2008-06-12 | 2009-12-17 | International Business Machines Corporation | Containment and recovery of software exceptions in interacting, replicated-state-machine-based fault-tolerant components |
CN106919489A (zh) * | 2016-08-02 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 应用程序的应用界面异常退出的监测方法及装置 |
CN111459715A (zh) * | 2019-01-20 | 2020-07-28 | 华为技术有限公司 | 应用异常恢复 |
CN111221671A (zh) * | 2019-11-27 | 2020-06-02 | 中国银行股份有限公司 | 应用程序异常退出的处理方法及装置 |
CN111552591A (zh) * | 2020-03-25 | 2020-08-18 | 中国平安财产保险股份有限公司 | 页面异常恢复方法、装置、设备及计算机可读存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896097A (zh) * | 2022-07-13 | 2022-08-12 | 荣耀终端有限公司 | 一种应用程序无响应处理方法及电子设备 |
CN114896097B (zh) * | 2022-07-13 | 2023-06-13 | 荣耀终端有限公司 | 一种应用程序无响应处理方法及电子设备 |
CN115129505A (zh) * | 2022-09-02 | 2022-09-30 | 荣耀终端有限公司 | 应用程序异常退出的处理方法及装置 |
CN117130824A (zh) * | 2023-01-10 | 2023-11-28 | 荣耀终端有限公司 | 一种处理异常的方法、电子设备及存储介质 |
CN116208705A (zh) * | 2023-04-24 | 2023-06-02 | 荣耀终端有限公司 | 设备异常恢复方法和电子设备 |
CN116208705B (zh) * | 2023-04-24 | 2023-09-05 | 荣耀终端有限公司 | 设备异常恢复方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114489917B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114489917B (zh) | 应用程序异常退出的处理方法、电子设备和可读存储介质 | |
US11803451B2 (en) | Application exception recovery | |
CN113032766B (zh) | 应用权限管理的方法和装置 | |
CN114020652B (zh) | 一种应用程序的管理方法及电子设备 | |
EP4095723A1 (en) | Permission reuse method, permission reuse-based resource access method, and related device | |
WO2020172874A1 (zh) | 一种文件处理方法及终端设备 | |
EP3021250A1 (en) | Electronic device and method for suggesting response manual in occurrence of denial | |
CN115017534B (zh) | 文件处理权限控制方法、装置及存储介质 | |
CN115048642B (zh) | 多可信执行环境下可信应用间的通信方法及电子设备 | |
CN113836540B (zh) | 管理应用权限的方法、设备、存储介质和程序产品 | |
CN114706633A (zh) | 预加载方法、电子设备及存储介质 | |
CN115879088A (zh) | 权限检查的方法和电子设备 | |
CN115033193B (zh) | 转屏处理方法、装置、介质及电子设备 | |
CN112540839B (zh) | 信息变更方法、装置、电子设备及存储介质 | |
CN106778297B (zh) | 应用程序的运行方法、装置及移动终端 | |
CN110704157B (zh) | 一种应用启动方法、相关装置及介质 | |
CN114595203A (zh) | 基于双***的文件同步方法、终端设备及存储介质 | |
CN110417931B (zh) | 域名解析记录获取方法、装置、计算机设备及存储介质 | |
CN117130627B (zh) | 配件升级方法及电子设备 | |
CN115017487B (zh) | 一种电子设备登录账号的切换方法及电子设备 | |
CN113536387B (zh) | 一种检测内核数据完整性的终端和方法 | |
CN116302295B (zh) | 一种界面显示方法 | |
CN115016665B (zh) | 冻屏故障检测方法、电子设备和计算机可读存储介质 | |
CN116719556B (zh) | ***升级的方法和电子设备 | |
CN116701134B (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 |