Android编程面向面试复习:ANR面试解析
安安 2017-07-11 来源 :网络 阅读 889 评论 0

摘要:本篇Android编程教程将为大家讲解Android编程的知识点,看完这篇文章会让你对Android编程的知识点有更加清晰的理解和运用。

本篇Android编程教程将为大家讲解Android编程的知识点,看完这篇文章会让你对Android编程的知识点有更加清晰的理解和运用。

ANR面试解析

1.1 什么是ANR

Application Not Responding
换句话说,ANR是应用程序无响应的对话框,主要是在主线程中做了耗时操作导致的。

三种情况会导致ANR

5s内没有响应用户的输入事件(按键或者触摸事件等) BroadcastReceiver中10s内未结束 Service在20s内无法处理完成

1.2 造成ANR的主要原因

应用程序的响应性是由Activity Manager和WindowManager系统服务监视的

主线程被IO操作阻塞(4.0以后不允许在主线程请求网络) 主线程存在耗时计算

Android中哪些操作是在主线程

Activity的所有生命周期的回调的执行都是在主线程 Service默认是执行在主线程(IntentService是在子线程) BroadcastReceiver的onReceiver回调执行在主线程 没有使用子线程looper的Handler的handleMessage,post(Runnable)是执行在主线程 AsyncTask的回调除了DoInBackground,其他都是在主线程

1.3 如何解决ANR

使用AsyncTask处理耗时IO操作 使用Thread(不可以创建handler)或者HandlerThread提高优先级 使用Handler来处理工作线程的耗时任务 Activity的onCreate和onResume回调中尽量少写耗时操作的代码

1.4 ANR问题排查

1.4.1 获取trace.txt文件

<code>adb shell cat /data/anr/traces.txt > d:/traces.txt (拷贝到d盘)</code>

   

希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标Android频道都能找到!

本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved