什么是ANR淹办?
全稱:Application Not Responding 應(yīng)用程序無響應(yīng);
Activity杭朱、BroadcastReceiver蘑拯、Service都是在主線程的;
應(yīng)用程序出現(xiàn)下面三種情況就會(huì)出現(xiàn)ANR
- Activity操作5s沒有響應(yīng);
- BroadcastReceiver操作10s沒有完成褐奥;
- Service操作20s沒有返回結(jié)果椎工;
如何避免ANR?
- 將主線程的耗時(shí)操作(比如:網(wǎng)絡(luò)訪問饭于、Socket通信、查詢大量SQL维蒙、復(fù)雜邏輯計(jì)算)都放到子線程中操作掰吕,然后通過hanlder.sendMessage、runOnUIThread颅痊、AsyncTask等方式更新UI殖熟,保證用戶界面的流暢度。
- 在Activity的關(guān)鍵方法onCreate() onResume()里可能少的去做創(chuàng)建動(dòng)作斑响。