最後一篇來說一下ANR
ANR全名是(Application Not Responding), 意思就是說目前app因為正在做某件事情耗費太多時間沒有回應,
這時系統會跳出對話框告訴使用者是否要繼續等待或是關閉
如下圖
Android定義了兩種會觸發ANR的時機
而根據debug的經驗, 要是使用broadcast intent
也可能會因為目前的broadcast太多而在BroadcastQueue排隊等太久觸發ANR
因此雖然broadcast intent方便好用但卻是有可能造成系統不順暢的元凶之一!
還是盡量少用為上
基本上要避免ANR就是把可能會耗時的工作放在非UI thread,
方法可以是Message-Handler + Thread, AsyncTask 或是Service等一些非同步的方式
並適當的告知使用者目前正在運行需等待的工作如使用ProgressBar.
最後, T-Shirt鍊成!