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回調中盡量避免耗時的代碼

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容