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

ANR

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

解決方案:

將所有耗時操作,比如訪問網絡,Socket通信,查詢大量SQL語句,複雜邏輯計算等都放在子線程中去,然後 通
過handler.sendMessage、runonUITread、AsyncTask等方式更新UI。無論如何都要確保用戶界面操作的流暢度。 如
果耗時操作需要讓用戶等待,那麼可以在界面上顯示進度條。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章