哪些Android组件以及哪些方法可以提升Application Not Responding问题以及为什么?

时间:2016-07-01 17:31:56

标签: java android performance

它适用于服务,活动,碎片等。它只发生在UI线程中的一些繁重操作的情况下吗?

还想知道 - 这些组件的哪种方法可以抛出/提升ANR?

1 个答案:

答案 0 :(得分:1)

  

在Android中,系统会通过显示一个说明您的应用已停止响应的对话框来防范一段时间内响应不足的应用程序。此时,您的应用在相当长的一段时间内没有响应,因此系统会为用户提供退出应用的选项

     

通常,如果应用程序无法响应用户输入,系统将显示ANR。例如,如果应用程序阻止UI线程上的某些I / O操作(通常是网络访问),则系统无法处理传入的用户输入事件。或许应用程序花费太多时间构建精心设计的内存结构或计算UI线程中游戏中的下一步行动。确保这些计算有效是非常重要的,但即使最有效的代码仍然需要时间来运行。

     

在Android中,应用程序响应性由活动管理器和Window Manager系统服务监视。当Android检测到以下某种情况时,它将显示特定应用程序的ANR对话框:   在5秒内无响应输入事件(如按键或屏幕触摸事件)。   BroadcastReceiver尚未在10秒内完成执行。

挑选出与您的问题相关的部分。 但是有关更多信息,请查看我从中获取此信息的android doc

当您在主线程上运行长时间运行的操作(例如网络)时,通常会发生ANR。