Android ANR小知识

转载请注明出处:王亟亟的大牛之路

崩溃和未响应是我们开发过程中经常会碰到,而且是很不希望碰到的问题,像这样:

(崩溃)

或者是这样?

通常,我们主线程被阻塞的时候会出现未响应的情况,而某些异常出现却为被处理会出现系统的崩溃。

这里我们来说下ANR:

全名:Application Not Responding

一般何时会出现?

—主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件

—BroadcastReceiver 没有在10秒内完成返回

—主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞。

—主线程中存在耗时的计算

—主线程中错误的操作,比如Thread.wait或者Thread.sleep等

系统通常会如何告知用户?

系统就会弹出一个ANR对话框,用户可以自行选择继续等待亦或者是停止当前程序。

如何避免?

—使用AsyncTask处理耗时IO操作。

使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同。

—使用Handler处理工作线程结果,而不是使用Thread.wait()或者Thread.sleep()来阻塞主线程。

—Activity的onCreate和onResume回调中尽量避免耗时的代码

—BroadcastReceiver中onReceive代码也要尽量减少耗时,建议使用IntentService处理。

通常100到200毫秒就会让人察觉程序反应慢,为了更加提升响应,可以使用下面的几种方法

—如果程序正在后台处理用户的输入,建议使用让用户得知进度,比如使用ProgressBar控件。

—程序启动时可以选择加上欢迎界面,避免让用户察觉卡顿。

—使用Systrace和TraceView找出影响响应的问题。

时间: 2024-08-28 14:46:12

Android ANR小知识的相关文章

39.Android版本小知识

中文名----英文名----版本----对应API Level 棉花糖 Marshmallow - 6.0.1_r10 - API 23棉花糖 Marshmallow - 6.0.0_r5 - API 23棉花糖 Marshmallow - 6.0.0_r1 - API 23 棒棒糖 Lollipop - 5.1.1_r6 - API 22棒棒糖 Lollipop - 5.1.0_r1 - API 22棒棒糖 Lollipop - 5.0.0_r2 - API 21 Android Wear -

Android Studio 小知识 文件无法读写解决

转载请注明:http://blog.csdn.net/lrs123123/article/details/44778773 不知道有没有童鞋遇到过这个小问题, 文件出现小锁头,无法修改代码,怎么解决呢 很简单,找到这个文件,属性,把只读去掉,好了,小文章纯属记录.

面试过程中,你知道这些小知识,将事半功倍

在平时我们面试的过程总总会遇到一些面试官问一些平时我们不怎么注意的问题,当问出来的时候,面试者通常都是一脸懵逼,这和我想象中的不一样阿,怎么不按照套路出牌,当然一些小知识更能体现出你的细心和好学,以下分析20个面试中的小知识,共勉~.·整理的这份PDF有从基础到进阶.含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有.还有辅之相关的视频+学习笔记 (更多完整项目下载.未

拿不到想要的offer,只缘身在CV中,关于一些面试小知识

在平时我们面试的过程总总会遇到一些面试官问一些平时我们不怎么注意的问题,当问出来的时候,面试者通常都是一脸懵逼,这和我想象中的不一样阿,怎么不按照套路出牌,当然一些小知识更能体现出你的细心和好学,以下分析20个面试中的小知识,共勉~.·整理的这份PDF有从基础到进阶.含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有.还有辅之相关的视频+学习笔记 (更多完整项目下载.未

Android 48个小知识

1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 2.TextView部分文字设置颜色 TextView tv = new TextView(this); //添加css样式 tv.setText(Html.fromHtml("<font color="#ff0000">红色<

Android ANR、Force Closed(转)

ANRs (“Application Not Responding”),意思是”应用没有响应“. 在如下情况下,Android会报出ANR错误: – 主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件 – BroadcastReceiver 没有在10秒内完成返回 通常情况下,下面这些做法会导致ANR 1.在主线程内进行网络操作 2.在主线程内进行一些缓慢的磁盘操作(例如执行没有优化过的SQL查询) 应用应该在5秒或者10秒内响应,否则用户会觉得“这个应用很垃圾”“烂”“慢

小知识不断补充

1.java.android中获取当前时间 this.sdf = new SimpleDateFormat("yyyy/MM/dd-hh:mm:ss", Locale.CHINA);        String time = sdf.format(new Date(System.currentTimeMillis())); 小知识不断补充,布布扣,bubuko.com

android ANR产生原因和解决办法【转】

ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框.用户可以选择"等待"而让程序继续运行,也可以选择"强制关闭".所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框.因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用

慕课网《Android智能机器人“小慕”的实现》项目上手操作与代码解读【1】

慕课网是我所找到的免费教程网站之一(http://www.imooc.com/),上面的项目设计前端.后端.移动开发等很多领域,个人感觉如果对编程感兴趣的话,慕课网绝对是上手项目的最佳选择.这个网站给出的一些项目都很新颖,比一些书上给的不知道沿用了多少年的项目新颖多了,而且在学习的时候如果发现问题可以给老师留言,然后老师都会一一回复.并且每一个项目都会附有源代码及一些资源,如果跟不上老师进度的话可以自己down下来仔细研究.好了,对慕课网我就介绍这么多吧. 因为本人曾经在大三暑假的时候自学过一点