anr面试详解

一.anr

1.什么是anr

Application Not Responding

2.造成anr的主要原因

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

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

主线程中存在耗时的计算

Android中哪些操作是在主线程呢?

Activity的所有生命周期都是执行在主线程的.

Service默认是执行在主线程的

BroadcastReceiver的onReceive回调是执行在主线程的.

没有使用子线程的looper的Handler的handleMessage,post(Runnable)是执行在主线程的

AsyncTask的回调中除了doInBackground,其他都是执行在主线程

3.如何解决anr

使用AsyncTask处理耗时IO操作

使用Thread或者HandlerThread提高优先级

使用handler来处理工作线程的耗时任务

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容