Android 面試題 ANR問題總結

2021-08-08 07:10:02 字數 1093 閱讀 1430

1、anr排錯一般有三種型別

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

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

servicetimeout(20 secends) --小概率事件 service在特定的時間內無法處理完成

2、哪些操作會導致anr 在主線程執行以下操作:

高耗時的操作,如影象變換

磁碟讀寫,資料庫讀寫操作

大量的建立新物件

3、如何避免

ui執行緒盡量只做跟ui相關的工作

耗時的操作(比如資料庫操作,i/o,連線網路或者別的有可能阻塞ui執行緒的操作)把它放在單獨的執行緒處理

盡量用handler來處理uithread和別的thread之間的互動

4、解決的邏輯

使用asynctask

在doinbackground()方法中執行耗時操作

在onpostexecuted()更新ui

使用handler實現非同步任務

在子執行緒中處理耗時操作

處理完成之後,通過handler.sendmessage()傳遞處理結果

在handler的handlemessage()方法中更新ui

或者使用handler.post()方法將訊息放到looper中

5、如何排查

首先分析log

從trace.txt檔案檢視呼叫stack,adb pull data/anr/traces.txt ./mytraces.txt

看**仔細檢視anr的成因(iowait?block?memoryleak?)

6、監測anr的watchdog

最近出來乙個叫leakcanary

#fc(force close) ##什麼時候會出現

error

oom,記憶體溢位

stackoverflowerror

runtime,比如說空指標異常

##解決的辦法

注意記憶體的使用和管理

使用thread.uncaughtexceptionhandler介面

android面試題二

六 android 中的動畫有哪幾種,它們的特點和區別是什麼 逐幀動畫和補間動畫。補間動畫 給出兩個關鍵幀 初和末 和變化時間 方式,通過一些演算法對view的內容在規定的時間內完成一系列的圖形變換。主要包括四種效果 alpha scale translate和rotate。七 請介紹下 andro...

android 基礎面試題

string s new string a b 會生成幾個物件 答案 3個 arraylistl new arraylist l.add a l.add b l.add c l.add d string s l.get 0 s null l 集合有什麼變化 答 無變化 switch 型別 int s...

Android 面試題總結

由於公司和個人原因 現在必須面臨 再就業,最近都在面試,面試的方向有android和android逆向和ios逆向,所以問的問題都挺詳細的,也怪自己平時看的東西和涉獵的東西太廣,導致根本沒有著眼android自身,在被問到一些問題,還是挺懵逼的。哎 心酸史。更新到我找到工作為止,我估計這輩子是不可能...