下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】ANR檢查定位分析工具
百度MTC是業(yè)界領(lǐng)先的移動(dòng)應(yīng)用測(cè)試服務(wù)平臺(tái),為廣大開(kāi)發(fā)者在移動(dòng)應(yīng)用測(cè)試中面臨的成本、技術(shù)和效率問(wèn)題提供解決方案。同時(shí)分享行業(yè)領(lǐng)先的百度技術(shù),作者來(lái)自百度員工和業(yè)界領(lǐng)袖等。一、ANR是什么簡(jiǎn)單說(shuō),通常就是App運(yùn)行的時(shí)候,duang~卡住了,怎么搞都動(dòng)不了。當(dāng)卡住超過(guò)一定時(shí)間,Android系統(tǒng)認(rèn)為這就是一次“ANR(ApplicationNotResponding)”。具體說(shuō),在以下情況發(fā)生時(shí),會(huì)發(fā)生ANR(可能在不同ROM中時(shí)間有所更改):用戶的輸入在5s內(nèi)沒(méi)被App響應(yīng);BroadcastReceiver的onReceiver()超過(guò)10s;Service中各生命周期函數(shù)執(zhí)行超過(guò)20s。
二、ANR必須死用戶在App的絕大部分操作,都需要有App的主動(dòng)回應(yīng),比如按下按鈕之后按鈕樣式的改變、下拉滾動(dòng)條內(nèi)容的移動(dòng)、加載資源時(shí)的進(jìn)度條轉(zhuǎn)轉(zhuǎn)轉(zhuǎn),它們都是“操作-反饋”配對(duì)的模式。對(duì)于我們手機(jī)上最常見(jiàn)的觸摸操作,0.1s的響應(yīng)延遲已經(jīng)有很明顯的卡頓感了。而對(duì)于常見(jiàn)的ANR,用戶至少要等5s以上!
發(fā)生了ANR,往往會(huì)彈出對(duì)話框,問(wèn)用戶是繼續(xù)等待還是直接關(guān)掉:相信幾乎所有Android手機(jī)用戶都見(jiàn)過(guò)這個(gè)然并卵的ANR對(duì)話框,但大部分普通用戶根本不知道這個(gè)對(duì)話框在講什么,并且往往也只有關(guān)閉App。漫長(zhǎng)的等待就給我看這個(gè)?從用戶的體驗(yàn)看,就是心中一萬(wàn)只草泥馬奔騰起來(lái)撞火車的感受??梢?jiàn)ANR對(duì)于應(yīng)用的影響并不亞于Crash。一般來(lái)說(shuō),界面相對(duì)越不“流暢”的App(說(shuō)明UI線程耗時(shí)操作多)越容易發(fā)生ANR(一個(gè)輸入事件在某個(gè)設(shè)備A上4秒有了反饋,并不意味著它在其他設(shè)備B上是安全的)。ANR其實(shí)就是界面卡頓的極端情況。反過(guò)來(lái),只要通過(guò)合理的方案消滅了App出現(xiàn)的ANR,往往也同時(shí)會(huì)使App展示界面表現(xiàn)會(huì)更加順滑流暢。一些典型的ANR問(wèn)題場(chǎng)景1)最常見(jiàn)的錯(cuò)誤,UI線程等待其它線程釋放某個(gè)鎖,導(dǎo)致UI線程無(wú)法處理用戶輸入;2)游戲中每幀動(dòng)畫都進(jìn)行了比較耗時(shí)的大量計(jì)算,導(dǎo)致CPU忙不過(guò)來(lái);3)Web應(yīng)用中,網(wǎng)絡(luò)狀態(tài)不穩(wěn)定,而界面在等待網(wǎng)絡(luò)數(shù)據(jù);4)UI線程中進(jìn)行了一些磁盤IO(包括數(shù)據(jù)庫(kù)、SD卡等等)的操作,在個(gè)別設(shè)備上因?yàn)橛布p壞等原因阻塞住了;5)手機(jī)被其他App占用著CPU,自己獲取不到足夠的CPU時(shí)間片,純屬誤傷。通過(guò)ANR日志定位問(wèn)題當(dāng)ANR發(fā)生時(shí),我們往往通過(guò)Logcat和traces文件(目錄/data/anr/)的相關(guān)信息輸出去定位問(wèn)題。主要包含以下幾方面:1)基本信息,包括進(jìn)程名、進(jìn)程號(hào)、包名、系統(tǒng)build號(hào)、ANR類型等等;2)CPU使用信息,包括活躍進(jìn)程的CPU平均占用率、IO情況等等;3)線程堆棧信息,所屬進(jìn)程包括發(fā)生ANR的進(jìn)程、其父進(jìn)程、最近有活動(dòng)的3個(gè)進(jìn)程等等。三、測(cè)試過(guò)程發(fā)現(xiàn)ANR的現(xiàn)狀1、在平常測(cè)試中,ANR有基本測(cè)試不到,因?yàn)锳NR基本發(fā)生在垃圾設(shè)備中,弱網(wǎng)絡(luò),頻繁操作。2、問(wèn)題不必現(xiàn),即使看到了問(wèn)題,定位麻煩:要去data/anr.txt文件里面查找。必須root,沒(méi)有對(duì)應(yīng)關(guān)系,分析復(fù)雜,導(dǎo)出文件就必須依賴手機(jī)零距離。
四、引入ANR檢測(cè)工具由于anr問(wèn)題不必現(xiàn),因此引入以下ANR檢測(cè)工具,當(dāng)anr問(wèn)題出現(xiàn)時(shí),自動(dòng)dump手機(jī)中的日志信息如trace文件、堆棧信息等,基本原理如下:4.1、基本原理
檢測(cè)到UI主線程卡頓時(shí)間超過(guò)設(shè)定的時(shí)間,如4s,即dumptrace文件以及堆棧信息,同時(shí)拋出異常,收集信息,根據(jù)這些文件信息即可定位到發(fā)生anr的原因
4.2、ANR檢測(cè)工具在BaiduBrowser中的應(yīng)用步驟一:源代碼libs中添加anr.jar
步驟二:在
Application
的onCreate中添加初始化sdk的代碼initSDK(Contextcontext,StringappKey,booleanwatchdog,inttime)其中time表示檢測(cè)判定線程是否超時(shí)(發(fā)生anr)的門限值,單位:ms
步驟三:正常編譯打包apk
安裝步驟4.2.1編譯打包插入anr檢測(cè)的apk測(cè)試app,任意操作(monkey/case),當(dāng)發(fā)生anr時(shí),會(huì)自動(dòng)殺掉進(jìn)程,并在本地生成日志文件日志路徑:/sdcard/lynq_anr下有兩個(gè)文件夾以BaiduBrowser啟動(dòng)為例。BaiduBrowser啟動(dòng)過(guò)程主線程過(guò)長(zhǎng),在低端機(jī)上容易導(dǎo)致發(fā)生anr;線程超時(shí),app進(jìn)程kill掉,查看手機(jī)本地trace日志,Crash信息包括trace文件以及堆棧信息
分析trace文件Trace文件通過(guò)eclipse中的DDMS可以查看具體發(fā)生ANR卡頓的原因通過(guò)realTime/Call從大到小排序,找到對(duì)應(yīng)的與代碼相關(guān)消耗時(shí)間最大的方法可以看出書簽數(shù)據(jù)庫(kù)初始化消耗CP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省陽(yáng)江市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版期中考試(下學(xué)期)試卷及答案
- 2024年有機(jī)硅、有機(jī)硅橡膠項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年抗肝片吸蟲(chóng)病藥項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年多導(dǎo)生理記錄儀(8導(dǎo)以上)投資申請(qǐng)報(bào)告
- 2024-2025學(xué)年重慶市涪陵五中高三上學(xué)期開(kāi)學(xué)考政治試題及答案
- 上海市市轄區(qū)(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版摸底考試(上學(xué)期)試卷及答案
- 新課標(biāo)人教版五年級(jí)語(yǔ)文下冊(cè)教案全冊(cè)
- 電氣火災(zāi)監(jiān)控系統(tǒng)技術(shù)規(guī)格書
- 亞麻籽油膳食補(bǔ)充劑市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 去除體毛用蠟條產(chǎn)業(yè)運(yùn)行及前景預(yù)測(cè)報(bào)告
- 中國(guó)聯(lián)合網(wǎng)絡(luò)通信有限公司招聘筆試題庫(kù)2024
- 《ISO 55001-2024資產(chǎn)管理-資產(chǎn)管理體系-要求》之1:“4 組織環(huán)境-4.1理解組織及其環(huán)境”解讀和應(yīng)用指導(dǎo)材料(雷澤佳-2024)
- 2024年南昌市南昌縣城管委招考編外城管協(xié)管員高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024-2030年中國(guó)微孔二氧化硅保溫板市場(chǎng)專題研究及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 企業(yè)管理學(xué)宿愷思考題答案
- 2024年新人教版一年級(jí)語(yǔ)文上冊(cè)全套試卷
- 2024-2030年中國(guó)氣體傳感器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 八年級(jí)英語(yǔ)上冊(cè) Unit 4 Whats the best movie theater(第1課時(shí))說(shuō)課稿
- 六年級(jí)上冊(cè)數(shù)學(xué)說(shuō)課稿-《6.百分?jǐn)?shù)的認(rèn)識(shí)》 人教版
- 人教版道德與法治九年級(jí)上冊(cè)5.2《凝聚價(jià)值追求》說(shuō)課稿
- Unit 7 Section A(2a-2e)課件人教版2024新教材七年級(jí)上冊(cè)英語(yǔ)
評(píng)論
0/150
提交評(píng)論