A method and device for avoiding application triggering ANR is applied to the field of terminal equipment technology. The method includes: confirming that the operation to be performed by the UI thread of the first process is a time-consuming operation; starting the second activity instance corresponding to the second process, and determining the location of the second activity instance in the activity stack as the top of the activity stack; starting the UI thread of the first process to perform the time-consuming operation; and when the UI is described After the thread executes the time-consuming operation, the location of the first activity instance corresponding to the first process in the activity stack is changed to the top of the activity stack. Based on the scheme of the application embodiment, in the process of executing time-consuming operations through UI threads, the ANR dialog box can be effectively avoided because the application can not respond to user's interaction events for a period of time.
【技术实现步骤摘要】
避免应用触发ANR的方法及装置
本申请涉及终端设备
,尤其涉及一种避免应用触发ANR的方法及装置。
技术介绍
在一些计算机设备的操作系统(如:andriod)中,如果某应用程序在一段时间内未响应用户的交互事件,则操作系统会显示一个应用程序无响应(ApplicationNotResponding,ANR)对话框。在相关技术中,可通过避免在UI线程处理耗时操作来降低出现ANR对话框的可能性。然而,在实际应用中,仍然存在通过UI线程处理一些耗时操作的需求,如何在通过UI线程处理一些耗时操作的过程中避免出现ANR对话框,是业界关注的焦点之一。
技术实现思路
为克服相关技术中存在的问题,本申请实施例提供一种避免应用触发ANR的方法及装置。根据本申请实施例的第一方面,提供一种避免应用触发ANR的方法,包括:确认第一进程的UI线程待执行的操作为耗时操作;启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;所述第一进程的UI线程开始执行所述耗时操作;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。根据本申请实施例的第二方面,提供一种避免应用触发ANR的方法,包括:确认第一进程的UI线程待执行的操作为耗时操作;所述第一进程的UI线程开始执行所述耗时操作;在触发应用程序无响应所述ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中 ...
【技术保护点】
1.一种避免应用触发ANR的方法,其特征在于,所述方法包括:确认第一进程的UI线程待执行的操作为耗时操作;启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;所述第一进程的UI线程开始执行所述耗时操作;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。
【技术特征摘要】
1.一种避免应用触发ANR的方法,其特征在于,所述方法包括:确认第一进程的UI线程待执行的操作为耗时操作;启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;所述第一进程的UI线程开始执行所述耗时操作;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。2.根据权利要求1所述的方法,其特征在于,在启动第二进程对应的第二Activity实例后,所述方法还包括:将所述第一进程对应的第一Activity实例在Activity栈中的位置变更为所述Activity栈的第二层,所述第二层位于所述Activity栈的顶端下并与所述顶端相邻。3.根据权利要求1或2所述的方法,其特征在于,所述第二Activity实例对应的用户界面是覆盖于所述第一Activity实例对应的用户界面上的透明界面。4.根据权利要求1或2所述的方法,其特征在于,所述第二Activity实例对应的用户界面中未包括用于触发人机交互事件的用户控件。5.根据权利要求1所述的方法,其特征在于,所述当所述UI线程执行完耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端,包括:当所述UI线程执行完耗时操作后,所述第一进程对应的第一Activity实例向所述第二Activity实例发送目标广播,所述目标广播用于指示所述UI线程执行完耗时操作;当所述第二Activity实例接收到所述目标广播后,结束所述第二Activity实例;将所述第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。6.根据权利要求1所述的方法,其特征在于,所述确认第一进程的UI线程待执行的操作为耗时操作,包括:当第一进程的UI线程待执行的操作的类型与预先确定的至少一种耗时操作的类型一致时,确认所述操作为耗时操作。7.一种避免应用触发ANR的方法,其特征在于,所述方法包括:确认第一进程的UI线程待执行的操作为耗时操作;所述第一进程的UI线程开始执行所述耗时操作;在触发应用程序无响应ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。8.根据权利要求7所述的方法,其特征在于,在启动第二进程对应的第二Activity实例后,所述方法还包括:将所述第一进程对应的第一Activity实例在Activity栈中的位置变更为所述Activity栈的第二层,所述第二层位于所述Activity栈的顶端下并与所述顶端相邻。9.根据权利要求7所述的方法,其特征在于,所述第二Activity实例对应的用户界面是覆盖于所述第一Activity实例对应的用户界面上的透明界面。10.根据权利要求7所述的方法,其特征在于,所述当所述UI线程执行完耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端,包括:当所述UI线程执行完耗时操作后,所述第一进程对应的第一Activity实例向所述第二Activity实例发送目标广播,所述目标广播用于指示所述UI线程执行完耗时操作;当所述第二Activity实例接收到所述目标广播后,结束所述第二Activity实例;将所述第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。11.根据权利要求7所述的方法,其特征在于,所述确认第一进程的UI线程待执行的操作为耗时操作,包括:当第一进程的UI线程待执行的操作的类型与预先确定的至少一种耗时操作的类型一致时,确认所述操作为耗时操作。12.一种避免应用的触发ANR的方法,其特征在于,所述方法包括:第一进程的UI线程执行操作;确认所述操作为耗时操作;在触发应用程序无响应ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。13.根据权利要求12所述的方法,其特征在于,在启动第二进程对应的第二Activity实例后,所述方法还包括:将所述第一进程对应的第一Activity实例在Activity栈中的位置变更为所述Activity栈的第二层,所述第二层位于所述Activity栈的顶端下并与所述顶端相邻。14.根据权利要求12所述的方法,其特征在于,所述第二Activity实例对应的用户界面是覆盖于所述第一Activity实例对应的用户界面上的透明界面。15.根据权利要求12所述的方法,其特征在于,所述当所述UI线程执行完耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端,包括:当所述UI线程执行完耗时操作后,所述第一进程对应的第一Activity实例向所述第二Activity实例发送目标广播,所述目标广播用于指示所述UI线程执行完耗时操作;当所述第二Activi...
【专利技术属性】
技术研发人员:郑涛,
申请(专利权)人:北京嘀嘀无限科技发展有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。