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