【面試】ANR應用程序無響應


  ANR(Application not responding)是指一個應用程序運行不流暢的情況下彈出的“程序無響應”對話框,用戶可選擇停止應用也可選擇等待響應。而造成這種影響的主要原因是Activity的執行時長最多為5s,而BoadcastReceiver執行時長最多為8s,若主線程當中執行的操作占用太長時間便會容易依法ANR的問題。

  在Activity主線程中應避免做耗時的操作,比如網絡加載,數據庫數據獲取或者位圖大小處理等。像這類操作可相應的放置到子線程當中處理,在通過Handler消息通知Activity執行相應的更新。

  使用BroadcastReceiver也是同樣的道理,不同的是不該在子線程中做處理,而應該是啟動Service。需要注意的是,在Intent Receiver中應避免啟動Activity(創新新的頁面),隨之廣播Intent展示的內容要通過Notification Manager實現。

  其中,應用程序的響應主要由Activity Manager與系統WindowManager監控。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: