避免和解決ANR的方法

2021-07-29 03:04:17 字數 872 閱讀 9173

,即應用無響應。

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

來處理uithread

和thread

之間的互動。ui

執行緒主要包括如下

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

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

mainthreadhandler: handlemessage(), post(runnable)

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

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

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

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

避免出現anr的方法 ANR的產生原因及避免辦法

在android上,如果你的應用程式有 responding 對話方塊。使用者可以選擇讓程式繼續執行,但是,他們在使用你的應用程式時,並不希望每次都要處理這個對話方塊。因此,在程式裡對響應性 能的設計很重要,這樣,系統不會顯示anr給使用者。如何來避免 考慮上面的anr定義,讓我們來研究一下為什麼它...