ANR是什麼?怎樣避免和解決ANR

2021-07-24 22:55:28 字數 977 閱讀 9015

anr是什麼?怎樣避免和解決anr

並不希望每次都要處理這個對話方塊。因此,在程式裡對響應效能的設計很重要,這樣,系統不會顯示anr給使用者。activity 5秒 broadcast10秒耗時的操作 worker thread 裡面完成, handler message…asyntask ,intentservice.等…

anr一般有三種型別:

1:keydispatchtimeout(5 seconds) --主要型別按鍵或觸控事件在特定時間內無響應

2:broadcasttimeout(10 seconds)broadcastreceiver在特定時間內無法處理完成

3:servicetimeout(20 seconds) --小概率型別service在特定的時間內無法處理完成超時的原因一般有兩種:

(1)當前的事件沒有機會得到處理(ui執行緒正在處理前乙個事件沒有及時完成或者looper被某種原因阻塞住)

(2)當前的事件正在處理,但沒有及時完成ui執行緒盡量只做跟ui相關的工作,耗時的工作(資料庫操作,i/o,連線網路

或者其他可能阻礙ui執行緒的操作)放入單獨的執行緒處理,盡量用handler來處理ui thread和thread之間的互動。

ui執行緒主要包括如下:

activity:oncreate(), onresume(), ondestroy(), onkeydown(),onclick()

asynctask: onpreexecute(), onprogressupdate(), onpostexecute(),oncancel()

mainthread handler: handlemessage(), post(runnable r)

查詢anr的方式:

1. 匯出/data/data/anr/traces.txt,找出函式和呼叫過程,分析**

2. 通過效能log 人肉查詢

面試之 ANR 是什麼?怎樣避免和解決

anr android not response 應用程式無響應 原因 1.按鍵或觸控事件在特定時間內無響應 5s 2.broadcastreceiver在特定時間內無法處理完成 10s 3.service在特定的時間內無法處理完 20s 怎麼避免 1.避免在activity裡面做耗時操作 2.避免...

避免和解決ANR的方法

即應用無響應。anr一般有三種型別 1 keydispatchtimeout 5 seconds 主要型別 按鍵或觸控事件在特定時間內無響應2 broadcasttimeout 10 seconds broadcastreceiver 在特定時間內無法處理完成3 servicetimeout 20 ...

什麼是ANR 如何避免它?

anr定義 如何來避免 考慮上面的anr定義,讓我們來研究一下為什麼它會在android應用程式裡發生和如何最佳構建應用程式來避免anr。android應用程式通常是執行在乙個單獨的執行緒 例如,main 裡。這意味著你的應用程式所做的事情如果在主線程裡占用了太長的時間的話,就會引發anr對話方塊,...