线程的两种睡眠方法&ANR(进程/服务无响应)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的两种睡眠方法&ANR(进程/服务无响应)相关的知识,希望对你有一定的参考价值。
1 method1: try { 2 Thread.sleep(3000); 3 } catch (InterruptedException e) { 4 e.printStackTrace(); 5 } 6 method2: SystemClock.sleep(3000);
ANR(Application Not Responding)
在android上,如果应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。
出现ANR的原因
默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。超出就会提示应用程序无响应(ANR:Application Not Responding)对话框。
三种常见类型
1:KeyDispatchTimeout(5 seconds) --主要类型
(Activity内主线程5s内无响应) 按键或触摸事件在特定时间内无响应
2:BroadcastTimeout(10 seconds)
(BroadcastReceiver 10s) BroadcastReceiver在特定时间内无法处理完成
3:ServiceTimeout(20 seconds) --小概率类型
(Service 20s) Service在特定的时间内无法处理完成
Service运行在主线程中,不可以做耗时操作,会导致ANR(20s),如果需要在服务中做耗时操作,需要开子线程
以上是关于线程的两种睡眠方法&ANR(进程/服务无响应)的主要内容,如果未能解决你的问题,请参考以下文章
Python36 1.joinablequeue 2.线程理论 3.多线程对比多进程 4.线程的使用方式 4.1.产生 线程的两种方式 4.2.守护线程 4.3.线程安全问题 4.3.1.互斥锁 4