Android ANR

weixin_34279579發表於2016-09-14

什麼是ANR?

全稱:Application Not Responding 應用程式無響應;

Activity、BroadcastReceiver、Service都是在主執行緒的;

應用程式出現下面三種情況就會出現ANR

  • Activity操作5s沒有響應;
  • BroadcastReceiver操作10s沒有完成;
  • Service操作20s沒有返回結果;

如何避免ANR?

  1. 將主執行緒的耗時操作(比如:網路訪問、Socket通訊、查詢大量SQL、複雜邏輯計算)都放到子執行緒中操作,然後通過hanlder.sendMessage、runOnUIThread、AsyncTask等方式更新UI,保證使用者介面的流暢度。
  2. 在Activity的關鍵方法onCreate() onResume()裡可能少的去做建立動作。

相關文章