1. 程式人生 > >android中的ANR(程式無響應)bug及其解決方案

android中的ANR(程式無響應)bug及其解決方案

ANR

在Android上,如果你的應用程式有一段時間響應不夠靈敏,系統會向用戶顯示一個對話方塊,這個對話方塊稱作應
用程式無響應(ANR:ApplicationNotResponding)對話方塊。使用者可以選擇讓程式繼續執行,但是,他們在使用你
的應用程式時,並不希望每次都要處理這個對話方塊。因此,在程式裡對響應效能的設計很重要,這樣,系統不會顯示 ANR
給使用者。
不同的元件發生ANR 的時間不一樣,主執行緒(Activity、Service)是 5秒,BroadCastReceiver 是 10 秒。 

解決方案:

將所有耗時操作,比如訪問網路,Socket通訊,查詢大量SQL語句,複雜邏輯計算等都放在子執行緒中去,然後 通
過handler.sendMessage、runonUITread、AsyncTask等方式更新UI。無論如何都要確保使用者介面操作的流暢度。 如
果耗時操作需要讓使用者等待,那麼可以在介面上顯示進度條。