美文网首页
anr面试详解

anr面试详解

作者: xiaolong20 | 来源:发表于2017-12-08 21:24 被阅读0次

    一.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回调中尽量避免耗时的代码

    相关文章

      网友评论

          本文标题:anr面试详解

          本文链接:https://www.haomeiwen.com/subject/xoeyixtx.html