【移動應(yīng)用開發(fā)技術(shù)】ANR檢查定位分析工具_第1頁
【移動應(yīng)用開發(fā)技術(shù)】ANR檢查定位分析工具_第2頁
【移動應(yīng)用開發(fā)技術(shù)】ANR檢查定位分析工具_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】ANR檢查定位分析工具

百度MTC是業(yè)界領(lǐng)先的移動應(yīng)用測試服務(wù)平臺,為廣大開發(fā)者在移動應(yīng)用測試中面臨的成本、技術(shù)和效率問題提供解決方案。同時分享行業(yè)領(lǐng)先的百度技術(shù),作者來自百度員工和業(yè)界領(lǐng)袖等。一、ANR是什么簡單說,通常就是App運行的時候,duang~卡住了,怎么搞都動不了。當卡住超過一定時間,Android系統(tǒng)認為這就是一次“ANR(ApplicationNotResponding)”。具體說,在以下情況發(fā)生時,會發(fā)生ANR(可能在不同ROM中時間有所更改):用戶的輸入在5s內(nèi)沒被App響應(yīng);BroadcastReceiver的onReceiver()超過10s;Service中各生命周期函數(shù)執(zhí)行超過20s。

二、ANR必須死用戶在App的絕大部分操作,都需要有App的主動回應(yīng),比如按下按鈕之后按鈕樣式的改變、下拉滾動條內(nèi)容的移動、加載資源時的進度條轉(zhuǎn)轉(zhuǎn)轉(zhuǎn),它們都是“操作-反饋”配對的模式。對于我們手機上最常見的觸摸操作,0.1s的響應(yīng)延遲已經(jīng)有很明顯的卡頓感了。而對于常見的ANR,用戶至少要等5s以上!

發(fā)生了ANR,往往會彈出對話框,問用戶是繼續(xù)等待還是直接關(guān)掉:相信幾乎所有Android手機用戶都見過這個然并卵的ANR對話框,但大部分普通用戶根本不知道這個對話框在講什么,并且往往也只有關(guān)閉App。漫長的等待就給我看這個?從用戶的體驗看,就是心中一萬只草泥馬奔騰起來撞火車的感受??梢夾NR對于應(yīng)用的影響并不亞于Crash。一般來說,界面相對越不“流暢”的App(說明UI線程耗時操作多)越容易發(fā)生ANR(一個輸入事件在某個設(shè)備A上4秒有了反饋,并不意味著它在其他設(shè)備B上是安全的)。ANR其實就是界面卡頓的極端情況。反過來,只要通過合理的方案消滅了App出現(xiàn)的ANR,往往也同時會使App展示界面表現(xiàn)會更加順滑流暢。一些典型的ANR問題場景1)最常見的錯誤,UI線程等待其它線程釋放某個鎖,導致UI線程無法處理用戶輸入;2)游戲中每幀動畫都進行了比較耗時的大量計算,導致CPU忙不過來;3)Web應(yīng)用中,網(wǎng)絡(luò)狀態(tài)不穩(wěn)定,而界面在等待網(wǎng)絡(luò)數(shù)據(jù);4)UI線程中進行了一些磁盤IO(包括數(shù)據(jù)庫、SD卡等等)的操作,在個別設(shè)備上因為硬件損壞等原因阻塞住了;5)手機被其他App占用著CPU,自己獲取不到足夠的CPU時間片,純屬誤傷。通過ANR日志定位問題當ANR發(fā)生時,我們往往通過Logcat和traces文件(目錄/data/anr/)的相關(guān)信息輸出去定位問題。主要包含以下幾方面:1)基本信息,包括進程名、進程號、包名、系統(tǒng)build號、ANR類型等等;2)CPU使用信息,包括活躍進程的CPU平均占用率、IO情況等等;3)線程堆棧信息,所屬進程包括發(fā)生ANR的進程、其父進程、最近有活動的3個進程等等。三、測試過程發(fā)現(xiàn)ANR的現(xiàn)狀1、在平常測試中,ANR有基本測試不到,因為ANR基本發(fā)生在垃圾設(shè)備中,弱網(wǎng)絡(luò),頻繁操作。2、問題不必現(xiàn),即使看到了問題,定位麻煩:要去data/anr.txt文件里面查找。必須root,沒有對應(yīng)關(guān)系,分析復(fù)雜,導出文件就必須依賴手機零距離。

四、引入ANR檢測工具由于anr問題不必現(xiàn),因此引入以下ANR檢測工具,當anr問題出現(xiàn)時,自動dump手機中的日志信息如trace文件、堆棧信息等,基本原理如下:4.1、基本原理

檢測到UI主線程卡頓時間超過設(shè)定的時間,如4s,即dumptrace文件以及堆棧信息,同時拋出異常,收集信息,根據(jù)這些文件信息即可定位到發(fā)生anr的原因

4.2、ANR檢測工具在BaiduBrowser中的應(yīng)用步驟一:源代碼libs中添加anr.jar

步驟二:在

Application

的onCreate中添加初始化sdk的代碼initSDK(Contextcontext,StringappKey,booleanwatchdog,inttime)其中time表示檢測判定線程是否超時(發(fā)生anr)的門限值,單位:ms

步驟三:正常編譯打包apk

安裝步驟4.2.1編譯打包插入anr檢測的apk測試app,任意操作(monkey/case),當發(fā)生anr時,會自動殺掉進程,并在本地生成日志文件日志路徑:/sdcard/lynq_anr下有兩個文件夾以BaiduBrowser啟動為例。BaiduBrowser啟動過程主線程過長,在低端機上容易導致發(fā)生anr;線程超時,app進程kill掉,查看手機本地trace日志,Crash信息包括trace文件以及堆棧信息

分析trace文件Trace文件通過eclipse中的DDMS可以查看具體發(fā)生ANR卡頓的原因通過realTime/Call從大到小排序,找到對應(yīng)的與代碼相關(guān)消耗時間最大的方法可以看出書簽數(shù)據(jù)庫初始化消耗CP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論