码迷,mamicode.com
首页 > 编程语言 > 详细

线程的两种睡眠方法&ANR(进程/服务无响应)

时间:2017-05-21 09:54:22      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:code   程序   nbsp   androi   ted   try   系统   子线程   isp   

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内无响应)  按键或触摸事件在特定时间内无响应

2BroadcastTimeout(10 seconds)

  (BroadcastReceiver 10s)  BroadcastReceiver在特定时间内无法处理完成

3:ServiceTimeout(20 seconds) --小概率类型

  (Service 20s)  Service在特定的时间内无法处理完成

  Service运行在主线程中,不可以做耗时操作,会导致ANR(20s),如果需要在服务中做耗时操作,需要开子线程

线程的两种睡眠方法&ANR(进程/服务无响应)

标签:code   程序   nbsp   androi   ted   try   系统   子线程   isp   

原文地址:http://www.cnblogs.com/mycharming/p/6883926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!