穩定性問題簡述Android 的穩定性是 Android 性能的一個重要指標,它也是 App 質量構建體系中最基本和最關鍵的一環;如果應用經常崩潰 , 或者關鍵功能不可用 , 那顯然會對我們的留存產生重大影響
【android anr原因,android系統事件的響應】所以為了保障應用的穩定性 , 我們首先應該樹立對穩定性的正確認識
從表現來看有:死機重啟自動關機無法開機凍屏黑屏閃退無響應等等情況

文章插圖
這也就說明了穩定性問題比較雜,且很多是概率性問題,沒有統一處理方式,需要針對具體的問題,具體分析
一般來說:必現的問題較易解決,針對當前代碼添加各種調試 log ,一步步 debug 去定位,過程雖然可能慢點 , 但一般都會解決
針對偶發性的概率問題,則較為麻煩,依賴于大量的測試復現,然后統計 分析當前抓取到的 events 、system 等 log 中,找到復現的步驟,然后去定位;且針對與這種概率問題,最好能夠拿到當時的現場,所以有時候需要將 tombstone 或者 ANR 、crash 轉為 ANR 去處理
從技術層面來劃分:無外乎兩大類:長時間無法執行完成(Timeout) 以及異常崩潰(crash). 主要分類如下所示:
ANRWatchdogCrash、界面、流程異常TombstonePanic接下來我們細說一下 ANR應用程序無響應即 Application not Responding,簡稱“無響應”或 “ANR”
為什么會有 ANR?如上所述,ANR 的產生需要同時滿足三個條件:
主線程:只有應用程序進程的主線程響應超時才會產生 ANR超時時間:產生 ANR 的上下文不同,超時時間也會不同,但只要在這個時間上限內沒有響應就會 ANR輸入事件/特定操作:輸入事件是指按鍵、觸屏等設備輸入事件,特定操作是指 BroadcastReceiver 和 Service 的生命周期中的各個函數,產生 ANR 的上下文不同,導致 ANR 的原因也會不同ANR 機制本身就是為了防止差的用戶體檢,是完全 Android 系統工程師為大家埋下的雷;這個雷既然是工程師設計的,那就可以被工程師控制
比如像我們通常說按鍵 5s 內時間處理不完的 ANR ,這個 5s 在一些低端手機上被修改為 8s 甚至 10s ,還有就是 ANR 產生后,相關的“現場”是會被保留下來比如在 events log、main log、system log 上有相關的 ANR 信息;再比如出現 ANR 的時候生成的 trace 文件,bugreport 中也有一些有用的信息,幫我們分析 ANR 產生的原因現在好多平臺 cpu 都是多核,cpu 達到 100% 都不能說明就是系統卡頓導致的 ANR
還要說明 , 系統 ANR in 往往比 event log 中的 am_anr 會慢很多;具體慢多少需要根據場景而定,所以建議以 event log 中的 am_anr 作為時間窗口起點比較好

文章插圖
那ANR in 能看到哪些信息呢?Reason: ANR 原因 , 這個在 evnent log 中也可以看到作用不大;原因可以定位 ANR 的時間窗口,比如按鍵類型的 ANR 那分析的時候只需要在 event log 的am_anr 之前 5s 的時間窗口中分析就行Load: 0.06 / 0.05 / 0.05 cpu 負載 , 這個可以看到是否是系統性能整體慢的參考指標 。但是各個平臺這個參數又不統一 。所以參考價值不大TOTAL: 這個是整體 cpu 占用情況如果能夠看到 kernel 占用比較多,可以考慮是否是系統問題那如何證明系統卡頓導致的 ANR 呢?如果是由系統引起的卡頓在 event log 中搜索dvm_lock_sample,因為往往在系統卡頓的時候 dvm_lock_sample 會打印出系統主線程的一些主要方法耗費了多少時間
dvm_lock_sample: [system_server,1,Binder:1614_A,22,AlarmManagerService.java,1072,-,2496,4] (進程名,是否主線程1是0否,線程號,花費時間,文件名,申請鎖行數,持鎖文件名 , 持鎖行數,采樣頻率)今天關于 ANR 的相關技術知識點就分享到這里了;關于 ANR 的技術問題,我們還要去好好的學習剖析;因此我把工作中遇到的性能卡頓問題,以及對網上大部分的資料的收集和整理 , 最終整合出了一份 《Android 高工必備性能優化》學習文檔,有需要這份文檔的朋友,可以 私信 發送 “進階” 即可 免費獲取
- 不愿意再跟家長溝通的原因 父母沒有和孩子平等溝通
- 絲瓜只開花不結果是什么原因 絲瓜花為什么有的結果有的不結果
- 小紅書熱門推薦機制,小紅書瀏覽量低什么原因
- 電腦配置很好做pr很卡是什么原因,電腦突然用pr特別卡是怎么回事
- 宋代瓷器為什么如此繁榮
- 火山爆發產生的原因 地球火山爆發的原因
- 有關韓信在井陘背水一戰的簡介 背水一戰中韓信能夠獲勝的原因有哪些
- 新生嬰兒腹瀉怎么辦 分清造成腹瀉的原因
- 希特勒仇視猶太人的原因 希特勒為什么恨
- 男子采耳后耳朵感染腳氣病 醫生透露了原因
