Android程序異常分析

Android程序崩潰大家都應(yīng)該遇到過(guò),force close和ANR應(yīng)該是大家遇到較多的。
這里把Android平臺(tái)程序崩潰的各種類型做一個(gè)簡(jiǎn)述和原因列舉。
1.ANR(可見(jiàn)ANR):
發(fā)生場(chǎng)景:應(yīng)用發(fā)生ANR。
崩潰癥狀:系統(tǒng)彈出窗口詢問(wèn)用戶選擇“Force Close”或者“Wait”。
“Force Close”將殺掉發(fā)生ANR的應(yīng)用進(jìn)程。“Wait”將會(huì)等待系統(tǒng)擇機(jī)恢復(fù)此應(yīng)用進(jìn)程。
發(fā)生原因:(1)應(yīng)用主線程卡住,對(duì)其他請(qǐng)求響應(yīng)超時(shí)。(2)死鎖。(3)系統(tǒng)反應(yīng)遲鈍。(4)CPU負(fù)載過(guò)重。

2.Force Close:
發(fā)生場(chǎng)景:應(yīng)用進(jìn)程崩潰。
崩潰癥狀:系統(tǒng)彈出窗口提示用戶某進(jìn)程崩潰。
發(fā)生原因:空指針異常等未捕捉的異常。
但是現(xiàn)在MIUI等系統(tǒng)下,系統(tǒng)會(huì)幫你捕獲異常,但是應(yīng)用程序已經(jīng)掛了,導(dǎo)致這種情況轉(zhuǎn)變?yōu)锳NR。

3.Tombstones:
發(fā)生場(chǎng)景:Native層崩潰
崩潰癥狀:如果發(fā)生崩潰的native層和UI有關(guān)聯(lián)(比如Browser),我們可以在UI上發(fā)現(xiàn)這個(gè)崩潰。
如果發(fā)生崩潰的native層是在后臺(tái)并且和UI沒(méi)有直接聯(lián)系,那么對(duì)于用戶來(lái)說(shuō)是不可見(jiàn)的,如果是debug版本可能會(huì)有Log打印出當(dāng)時(shí)的底層現(xiàn)場(chǎng)。
發(fā)生原因:各種各樣,需要具體情況具體分析。

4.系統(tǒng)服務(wù)崩潰(System Server Crash):
發(fā)生場(chǎng)景:系統(tǒng)服務(wù)是Android核心進(jìn)程,此服務(wù)進(jìn)程發(fā)生崩潰。
崩潰癥狀:手機(jī)重啟到Android啟動(dòng)界面
發(fā)生原因:(1)系統(tǒng)服務(wù)看門狗發(fā)現(xiàn)異常。(2)系統(tǒng)服務(wù)發(fā)生未捕獲異常。(3)OOM。(4)系統(tǒng)服務(wù)Native發(fā)生Tombstone。

5.Kernel Panics:
發(fā)生場(chǎng)景:Linux內(nèi)核發(fā)生嚴(yán)重錯(cuò)誤
崩潰癥狀:手機(jī)從bootloader開(kāi)始完全重啟
發(fā)生原因:(1)Linux內(nèi)核內(nèi)存空間發(fā)生內(nèi)存崩潰。(2)內(nèi)核看門狗發(fā)現(xiàn)異常。(3)空指針操作內(nèi)核。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容