避免应用触发ANR的方法及装置制造方法及图纸

技术编号:19319832 阅读:21 留言:0更新日期:2018-11-03 10:39
一种避免应用触发ANR的方法及装置,应用于终端设备技术领域。所述方法包括:确认第一进程的UI线程待执行的操作为耗时操作;启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;所述第一进程的UI线程开始执行所述耗时操作;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。基于申请实施例的方案,在通过UI线程执行耗时操作的过程中,可有效避免应用程序因一段时间无法响应用户的交互事件而弹出ANR对话框。

Avoid using ANR triggering methods and devices

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栈中的位置确定为Activity栈的顶端;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。根据本申请实施例的第三方面,提供一种避免应用触发ANR的方法,包括:第一进程的UI线程执行操作;确认所述操作为耗时操作;在触发应用程序无响应所述ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。根据本申请实施例的第四方面,提供一种避免应用触发ANR的装置,包括:确认单元,用于确认第一进程的UI线程待执行的操作为耗时操作;启动单元,用于启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;执行单元,用于利用所述第一进程的UI线程开始执行所述耗时操作;第一变更单元,用于当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。根据本申请实施例的第五方面,提供一种避免应用触发ANR的装置,包括:确认单元,用于确认第一进程的UI线程待执行的操作为耗时操作;执行单元,用于利用所述第一进程的UI线程开始执行所述耗时操作;启动单元,用于在触发应用程序无响应ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;第一变更单元,用于当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。根据本申请实施例的第六方面,提供一种避免应用触发ANR的装置,包括:执行单元,用于利用第一进程的UI线程执行操作;确认单元,用于确认所述操作为耗时操作;启动单元,用于在触发应用程序无响应ANR对话框之前,启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端;第一变更单元,用于当所述UI线程执行完所述耗时操作后,将所述第一进程对应的第一Activity实例在所述Activity栈中的位置变更为所述Activity栈的顶端。通过以上技术方案可以看出,在发生ANR之前,通过启动第二进程对应的第二Activity实例,并将所述第二Activity实例在Activity栈中的位置确定为Activity栈的顶端,从而使得第二Activity实例对应的用户界面被显示于屏幕的最前端。此后,在UI线程执行耗时操作的过程中,由于屏幕最前端不是第一进程对应的用户界面,可以确保用户的交互事件不会进入第一进程的UI线程,从而在通过UI线程执行耗时操作的过程中,有效避免应用程序因一段时间无法响应用户的交互事件而弹出ANR对话框。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本专利技术的实施例,并与说明书一起用于解释本专利技术的原理。图1是根据一示例性实施例示出的一种避免应用触发ANR的方法的流程;图2是根据一示例性实施例示出的用户界面变化示意图;图3是根据一示例性实施例示出的Activity栈的变化示意图;图4是根据一示例性实施例示出的另一种避免应用触发ANR的方法的流程;图5是根据一示例性实施例示出的又一种避免应用触发ANR的方法的流程;图6是根据一示例性实施例示出的一种计算机设备的硬件结构;图7是根据一示例性实施例示出的一种避免应用触发ANR的装置的框图;图8是根据一示例性实施例示出的另一种避免应用触发ANR的装置的框图;图9是根据一示例性实施例示出的又一种避免应用触发ANR的装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请实施例的一些方面相一致的装置和方法的例子。在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在一些计算机设备的操作系统(如:andriod)中,如果某应用程序在一段时间(如:5秒)内未响应用户的交互事件(如:触摸事件或键盘事件等),则操作系统会显示一个应用程序无响应(ApplicationNo本文档来自技高网...

【技术保护点】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1