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自身,在被問到一些問題,還是挺懵逼的。哎 心酸史。更新到我找到工作為止,我估計這輩子是不可能...